home *** CD-ROM | disk | FTP | other *** search
/ Mac Magazin/MacEasy 32 / Mac Magazin and MacEasy Magazine CD - Issue 32.iso / Grafik & Text / OzTeX3.0 / TeX-inputs / LaTeX / base / latex.ltx (.txt) < prev    next >
LaTeX Document  |  1997-03-07  |  240KB  |  7,495 lines

  1. %% This is file `latex.ltx',
  2. %% generated with the docstrip utility.
  3. %% The original source files were:
  4. %% ltdirchk.dtx  (with options: `initex,2ekernel,dircheck')
  5. %% ltplain.dtx  (with options: `2ekernel')
  6. %% ltvers.dtx  (with options: `2ekernel')
  7. %% ltdefns.dtx  (with options: `2ekernel')
  8. %% ltalloc.dtx  (with options: `2ekernel')
  9. %% ltcntrl.dtx  (with options: `2ekernel')
  10. %% lterror.dtx  (with options: `2ekernel')
  11. %% ltpar.dtx  (with options: `2ekernel')
  12. %% ltspace.dtx  (with options: `2ekernel')
  13. %% ltlogos.dtx  (with options: `2ekernel')
  14. %% ltfiles.dtx  (with options: `2ekernel')
  15. %% ltoutenc.dtx  (with options: `2ekernel')
  16. %% ltfssbas.dtx  (with options: `2ekernel')
  17. %% ltfsstrc.dtx  (with options: `2ekernel')
  18. %% ltfsscmp.dtx  (with options: `compat,2ekernel')
  19. %% ltfssdcl.dtx  (with options: `compat,2ekernel')
  20. %% ltfssini.dtx  (with options: `compat')
  21. %% ltfntcmd.dtx  (with options: `2ekernel')
  22. %% ltcounts.dtx  (with options: `2ekernel')
  23. %% ltpageno.dtx  (with options: `2ekernel')
  24. %% ltxref.dtx  (with options: `2ekernel')
  25. %% ltlength.dtx  (with options: `2ekernel')
  26. %% ltmiscen.dtx  (with options: `2ekernel')
  27. %% ltmath.dtx  (with options: `2ekernel')
  28. %% ltlists.dtx  (with options: `2ekernel')
  29. %% ltboxes.dtx  (with options: `2ekernel')
  30. %% lttab.dtx  (with options: `2ekernel')
  31. %% ltpictur.dtx  (with options: `2ekernel')
  32. %% ltthm.dtx  (with options: `2ekernel')
  33. %% ltsect.dtx  (with options: `2ekernel')
  34. %% ltfloat.dtx  (with options: `2ekernel')
  35. %% ltidxglo.dtx  (with options: `2ekernel')
  36. %% ltbibl.dtx  (with options: `2ekernel')
  37. %% ltpage.dtx  (with options: `2ekernel')
  38. %% ltoutput.dtx  (with options: `2ekernel')
  39. %% ltclass.dtx  (with options: `2ekernel')
  40. %% ltfinal.dtx  (with options: `2ekernel')
  41. %% This is a generated file.
  42. %% Copyright 1993 1994 1995 1996 1997
  43. %% The LaTeX3 Project and any individual authors listed elsewhere
  44. %% in this file.
  45. %% For further copyright information, and conditions for modification
  46. %% and distribution, see the file legal.txt, and any other copyright
  47. %% notices in this file.
  48. %% This file is part of the LaTeX2e system.
  49. %% ----------------------------------------
  50. %%   This system is distributed in the hope that it will be useful,
  51. %%   but WITHOUT ANY WARRANTY; without even the implied warranty of
  52. %%   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  53. %%   For error reports concerning UNCHANGED versions of this file no
  54. %%   more than one year old, see bugs.txt.
  55. %%   Please do not request updates from us directly.  Primary
  56. %%   distribution is through the CTAN archives.
  57. %% IMPORTANT COPYRIGHT NOTICE:
  58. %% You are NOT ALLOWED to distribute this file alone.
  59. %% You are allowed to distribute this file under the condition that it
  60. %% is distributed together with all the files listed in manifest.txt.
  61. %% If you receive only some of these files from someone, complain!
  62. %% Permission is granted to copy this file to another file with a
  63. %% clearly different name and to customize the declarations in that
  64. %% copy to serve the needs of your installation, provided that you
  65. %% comply with the conditions in the file legal.txt.
  66. %% However, NO PERMISSION is granted to generate or to distribute a
  67. %% modified version of this file under its original name.
  68. %% You are NOT ALLOWED to change this file.
  69. %% MODIFICATION ADVICE:
  70. %% If you want to customize this file, it is best to make a copy of
  71. %% the source file(s) from which it was produced.  Use a different
  72. %% name for your copy(ies) and modify the copy(ies); this will ensure
  73. %% that your modifications do not get overwritten when you install a
  74. %% new release of the standard system.  You should also ensure that
  75. %% your modified source file does not generate any modified file with
  76. %% the same name as a standard file.
  77. %% You can then easily distribute your modifications by distributing
  78. %% the modified and renamed copy of the source file, taking care to
  79. %% observe the conditions in legal.txt; this will ensure that other
  80. %% users can safely use your modifications.
  81. %% You will also need to produce your own, suitably named, .ins file to
  82. %% control the generation of files from your source file; this file
  83. %% should contain your own preambles for the files it generates, not
  84. %% those in the standard .ins files.
  85. %% The names of the source files used are shown above.
  86. %%% From File: ltdirchk.dtx
  87. \ifnum\catcode`\{=1
  88.   \errmessage
  89.   {LaTeX must be made using an initex with no format preloaded}
  90. \catcode`\{=1
  91. \catcode`\}=2
  92. \catcode`\#=6
  93. \catcode`\^=7
  94. \chardef\active=13
  95. \catcode`\@=11
  96. \countdef\count@=255
  97. \let\bgroup={ \let\egroup=}
  98. \ifx\@@input\@undefined\let\@@input\input\fi
  99. \ifx\@@end\@undefined\let\@@end\end\fi
  100. \chardef\@inputcheck0
  101. \chardef\sixt@@n=16
  102. \newlinechar`\^^J
  103. \def\typeout{\immediate\write17}
  104. \def\dospecials{\do\ \do\\\do\{\do\}\do\$\do\&%
  105.   \do\#\do\^\do\_\do\%\do\~}
  106. \def\@makeother#1{\catcode`#1=12\relax}
  107. \def\space{ }
  108. \def\@tempswafalse{\let\if@tempswa\iffalse}
  109. \def\@tempswatrue{\let\if@tempswa\iftrue}
  110. \let\if@tempswa\iffalse
  111. \def\loop#1\repeat{\def\iterate{#1\relax\expandafter\iterate\fi}%
  112.   \iterate \let\iterate\relax}
  113. \let\repeat\fi
  114. \def\two@digits#1{\ifnum#1<10 0\fi\number#1}
  115. \long\def\@firstoftwo#1#2{#1}
  116. \long\def\@secondoftwo#1#2{#2}
  117. \def\ProvidesFile#1{%
  118.   \begingroup
  119.     \catcode`\ 10 %
  120.     \@makeother\/%
  121.     \@ifnextchar[{\@providesfile{#1}}{\@providesfile{#1}[]}}
  122. \def\@providesfile#1[#2]{%
  123.     \wlog{File: #1 #2}%
  124.     \@addtofilelist{ #2}%
  125.     \endgroup}
  126. \long\def\@addtofilelist#1{}
  127. \def\@empty{}
  128. \catcode`\%=12
  129. \def\@percentchar{%}
  130. \catcode`\%=14
  131. \let\@currdir\@undefined
  132. \let\input@path\@undefined
  133. \let\filename@parse\@undefined
  134. \def\strip@prefix#1>{}
  135. \input texsys.cfg
  136. \begingroup
  137. \count@\time
  138. \divide\count@ 60
  139. \count2=-\count@
  140. \multiply\count2 60
  141. \advance\count2 \time
  142. \edef\today{%
  143.   \the\year/\two@digits{\the\month}/\two@digits{\the\day}:%
  144.     \two@digits{\the\count@}:\two@digits{\the\count2}}
  145. \immediate\openout15=texsys.aux
  146. \immediate\write15{\today^^J}
  147. \immediate\closeout15 %
  148. \def\IfFileExists#1#2#3{%
  149.   \openin\@inputcheck#1 %
  150.   \ifeof\@inputcheck
  151.      #3\relax
  152.   \else
  153.     \read\@inputcheck to \reserved@a
  154.     \ifx\reserved@a\today
  155.       \typeout{#1 found}#2\relax
  156.     \else
  157.       \typeout{BAD: old file \reserved@a (should be \today)}%
  158.       #3\relax
  159.     \fi
  160.   \fi
  161.   \closein\@inputcheck}
  162. \endlinechar=-1
  163. \ifx\@currdir\@undefined
  164.   \IfFileExists{./texsys.aux}{\gdef\@currdir{./}}%
  165.     {\IfFileExists{[]texsys.aux}{\gdef\@currdir{[]}}%
  166.       {\IfFileExists{:texsys.aux}{\gdef\@currdir{:}}{}}}
  167.   \ifx\@currdir\@undefined
  168.     \global\let\@currdir\@empty
  169.     \typeout{^^J^^J%
  170.       !! No syntax for the current directory could be found^^J%
  171.       }%
  172.   \fi
  173. \else
  174.   \IfFileExists{\@currdir texsys.aux}{}{%
  175.     \edef\reserved@a{\errhelp{%
  176.       texsys.cfg specifies the current directory syntax to be^^J%
  177.       \meaning\@currdir^^J%
  178.       but this does not work on this system.^^J%
  179.       Remove texsys.cfg and restart.}}\reserved@a
  180.     \errmessage{Bad texsys.cfg file: \noexpand\@currdir}\@@end}
  181. \immediate\closeout15 %
  182. \endgroup
  183. \typeout{^^J^^J%
  184.          \noexpand\@currdir set to:
  185.            \expandafter\strip@prefix\meaning\@currdir.^^J%
  186.          }
  187.   \typeout{^^J%
  188.     Assuming \noexpand\openin and \noexpand\input^^J%
  189.     \ifx\input@path\@undefined
  190.       have the same search path.^^J%
  191.     \else
  192.       have different  search paths.^^J%
  193.       LaTeX will use the path specified by \noexpand\input@path:^^J%
  194.     \fi
  195.     }
  196. \ifx\filename@parse\@undefined
  197.   \def\reserved@a{./}\ifx\@currdir\reserved@a
  198.     \typeout{^^JDefining UNIX/DOS style filename parser.^^J}
  199.     \def\filename@parse#1{%
  200.       \let\filename@area\@empty
  201.       \expandafter\filename@path#1/\\}
  202.     \def\filename@path#1/#2\\{%
  203.       \ifx\\#2\\%
  204.          \def\reserved@a{\filename@simple#1.\\}%
  205.       \else
  206.          \edef\filename@area{\filename@area#1/}%
  207.          \def\reserved@a{\filename@path#2\\}%
  208.       \fi
  209.       \reserved@a}
  210.   \else\def\reserved@a{[]}\ifx\@currdir\reserved@a
  211.     \typeout{^^JDefining VMS style filename parser.^^J}
  212.     \def\filename@parse#1{%
  213.       \let\filename@area\@empty
  214.       \expandafter\filename@path#1]\\}
  215.     \def\filename@path#1]#2\\{%
  216.       \ifx\\#2\\%
  217.          \def\reserved@a{\filename@simple#1.\\}%
  218.       \else
  219.          \edef\filename@area{\filename@area#1]}%
  220.          \def\reserved@a{\filename@path#2\\}%
  221.       \fi
  222.       \reserved@a}
  223.   \else\def\reserved@a{:}\ifx\@currdir\reserved@a
  224.     \typeout{^^JDefining Mac style filename parser.^^J}
  225.     \def\filename@parse#1{%
  226.       \let\filename@area\@empty
  227.       \expandafter\filename@path#1:\\}
  228.     \def\filename@path#1:#2\\{%
  229.       \ifx\\#2\\%
  230.          \def\reserved@a{\filename@simple#1.\\}%
  231.       \else
  232.          \edef\filename@area{\filename@area#1:}%
  233.          \def\reserved@a{\filename@path#2\\}%
  234.       \fi
  235.       \reserved@a}
  236.   \else
  237.     \typeout{^^JDefining generic filename parser.^^J}
  238.     \def\filename@parse#1{%
  239.       \let\filename@area\@empty
  240.       \expandafter\filename@simple#1.\\}
  241.   \fi\fi\fi
  242.   \def\filename@simple#1.#2\\{%
  243.     \ifx\\#2\\%
  244.        \let\filename@ext\relax
  245.     \else
  246.        \edef\filename@ext{\filename@dot#2\\}%
  247.     \fi
  248.     \edef\filename@base{#1}}
  249.   \def\filename@dot#1.\\{#1}
  250. \else
  251.   \typeout{^^J^^J%
  252.     \noexpand\filename@parse was defined in texsys.cfg:^^J%
  253.     \expandafter\strip@prefix\meaning\filename@parse.^^J%
  254.     }
  255. \ifx\@TeXversion\@undefined
  256.   \ifx\@undefined\inputlineno
  257.     \def\@TeXversion{2}
  258.   \else
  259.    {\catcode`\^^J=\active
  260.      \def\reserved@a#1#2\@@{\if#1\string^3\fi}
  261.      \edef\reserved@a{\expandafter\reserved@a\string^^J\@@}
  262.      \ifx\reserved@a\@empty\else\gdef\@TeXversion{3}\fi}
  263.   \fi
  264. %%% From File: ltplain.dtx
  265. %% \CharacterTable
  266. %%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
  267. %%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
  268. %%   Digits        \0\1\2\3\4\5\6\7\8\9
  269. %%   Exclamation   \!     Double quote  \"     Hash (number) \#
  270. %%   Dollar        \$     Percent       \%     Ampersand     \&
  271. %%   Acute accent  \'     Left paren    \(     Right paren   \)
  272. %%   Asterisk      \*     Plus          \+     Comma         \,
  273. %%   Minus         \-     Point         \.     Solidus       \/
  274. %%   Colon         \:     Semicolon     \;     Less than     \<
  275. %%   Equals        \=     Greater than  \>     Question mark \?
  276. %%   Commercial at \@     Left bracket  \[     Backslash     \\
  277. %%   Right bracket \]     Circumflex    \^     Underscore    \_
  278. %%   Grave accent  \`     Left brace    \{     Vertical bar  \|
  279. %%   Right brace   \}     Tilde         \~}
  280. \catcode`\{=1 % left brace is begin-group character
  281. \catcode`\}=2 % right brace is end-group character
  282. \catcode`\$=3 % dollar sign is math shift
  283. \catcode`\&=4 % ampersand is alignment tab
  284. \catcode`\#=6 % hash mark is macro parameter character
  285. \catcode`\^=7 % circumflex and uparrow are for superscripts
  286. \catcode`\_=8 % underline and downarrow are for subscripts
  287. \catcode`\^^I=10 % ascii tab is a blank space
  288. \chardef\active=13 \catcode`\~=\active % tilde is active
  289. \catcode`\^^L=\active \outer\def^^L{\par}% ascii form-feed is \outer\par
  290. \message{catcodes,}
  291. \def\dospecials{\do\ \do\\\do\{\do\}\do\$\do\&%
  292.   \do\#\do\^\do\_\do\%\do\~}
  293. \catcode`@=11
  294. \chardef\@ne=1
  295. \chardef\tw@=2
  296. \chardef\thr@@=3
  297. \chardef\sixt@@n=16
  298. \chardef\@cclv=255
  299. \mathchardef\@cclvi=256
  300. \mathchardef\@m=1000
  301. \mathchardef\@M=10000
  302. \mathchardef\@MM=20000
  303. \message{registers,}
  304. \count10=22 % allocates \count registers 23, 24, ...
  305. \count11=9 % allocates \dimen registers 10, 11, ...
  306. \count12=9 % allocates \skip registers 10, 11, ...
  307. \count13=9 % allocates \muskip registers 10, 11, ...
  308. \count14=9 % allocates \box registers 10, 11, ...
  309. \count15=9 % allocates \toks registers 10, 11, ...
  310. \count16=-1 % allocates input streams 0, 1, ...
  311. \count17=-1 % allocates output streams 0, 1, ...
  312. \count18=3 % allocates math families 4, 5, ...
  313. \count19=0 % allocates \language codes 1, 2, ...
  314. \count20=255 % allocates insertions 254, 253, ...
  315. \countdef\insc@unt=20
  316. \countdef\allocationnumber=21
  317. \countdef\m@ne=22 \m@ne=-1
  318. \def\wlog{\immediate\write\m@ne}
  319. \countdef\count@=255
  320. \dimendef\dimen@=0
  321. \dimendef\dimen@i=1 % global only
  322. \dimendef\dimen@ii=2
  323. \skipdef\skip@=0
  324. \toksdef\toks@=0
  325. \def\newcount{\alloc@0\count\countdef\insc@unt}
  326. \def\newdimen{\alloc@1\dimen\dimendef\insc@unt}
  327. \def\newskip{\alloc@2\skip\skipdef\insc@unt}
  328. \def\newmuskip{\alloc@3\muskip\muskipdef\@cclvi}
  329. \def\newbox{\alloc@4\box\chardef\insc@unt}
  330. \def\newhelp#1#2{\newtoks#1#1\expandafter{\csname#2\endcsname}}
  331. \def\newtoks{\alloc@5\toks\toksdef\@cclvi}
  332. \def\newread{\alloc@6\read\chardef\sixt@@n}
  333. \def\newwrite{\alloc@7\write\chardef\sixt@@n}
  334. \def\newlanguage{\alloc@9\language\chardef\@cclvi}
  335. \def\alloc@#1#2#3#4#5{\global\advance\count1#1\@ne
  336.   \ch@ck#1#4#2% make sure there's still room
  337.   \allocationnumber\count1#1%
  338.   \global#3#5\allocationnumber
  339.   \wlog{\string#5=\string#2\the\allocationnumber}}
  340. \def\newinsert#1{\global\advance\insc@unt \m@ne
  341.   \ch@ck0\insc@unt\count
  342.   \ch@ck1\insc@unt\dimen
  343.   \ch@ck2\insc@unt\skip
  344.   \ch@ck4\insc@unt\box
  345.   \allocationnumber\insc@unt
  346.   \global\chardef#1\allocationnumber
  347.   \wlog{\string#1=\string\insert\the\allocationnumber}}
  348. \gdef\ch@ck#1#2#3{%
  349.   \ifnum\count1#1<#2\else
  350.    \errmessage{No room for a new #3}%
  351.   \fi}
  352. \newdimen\maxdimen \maxdimen=16383.99999pt % the largest legal <dimen>
  353. \newskip\hideskip \hideskip=-1000pt plus 1fill % negative but can grow
  354. \newdimen\p@ \p@=1pt % this saves macro space and time
  355. \newdimen\z@ \z@=0pt % can be used both for 0pt and 0
  356. \newskip\z@skip \z@skip=0pt plus0pt minus0pt
  357. \newbox\voidb@x % permanently void box register
  358. \message{compatibility for TeX 2, }
  359. \ifx\@undefined\inputlineno
  360.   \newcount\inputlineno
  361.   \inputlineno-1
  362.   \ifx\@undefined\language
  363.     \newcount\language
  364.   \fi
  365.   \newcount\lefthyphenmin
  366.   \newcount\righthyphenmin
  367.   \newcount\errorcontextlines
  368.   \newcount\holdinginserts
  369.   \newdimen\emergencystretch
  370.   \newcount\badness
  371.   \let\noboundary\relax
  372.   \newcount\setlanguage
  373. \message{parameters,}
  374. \pretolerance=100
  375. \tolerance=200 % INITEX sets this to 10000
  376. \hbadness=1000
  377. \vbadness=1000
  378. \linepenalty=10
  379. \hyphenpenalty=50
  380. \exhyphenpenalty=50
  381. \binoppenalty=700
  382. \relpenalty=500
  383. \clubpenalty=150
  384. \widowpenalty=150
  385. \displaywidowpenalty=50
  386. \brokenpenalty=100
  387. \predisplaypenalty=10000
  388. \doublehyphendemerits=10000
  389. \finalhyphendemerits=5000
  390. \adjdemerits=10000
  391. \tracinglostchars=1
  392. \uchyph=1
  393. \defaulthyphenchar=`\-
  394. \defaultskewchar=-1
  395. \delimiterfactor=901
  396. \showboxbreadth=-1
  397. \showboxdepth=-1
  398. \errorcontextlines=-1
  399. \hfuzz=0.1pt
  400. \vfuzz=0.1pt
  401. \overfullrule=5pt
  402. \maxdepth=4pt
  403. \splitmaxdepth=\maxdimen
  404. \boxmaxdepth=\maxdimen
  405. \delimitershortfall=5pt
  406. \nulldelimiterspace=1.2pt
  407. \scriptspace=0.5pt
  408. \parindent=20pt
  409. \parskip=0pt plus 1pt
  410. \abovedisplayskip=12pt plus 3pt minus 9pt
  411. \abovedisplayshortskip=0pt plus 3pt
  412. \belowdisplayskip=12pt plus 3pt minus 9pt
  413. \belowdisplayshortskip=7pt plus 3pt minus 4pt
  414. \topskip=10pt
  415. \splittopskip=10pt
  416. \parfillskip=0pt plus 1fil
  417. \newskip\normalbaselineskip \normalbaselineskip=12pt
  418. \newskip\normallineskip \normallineskip=1pt
  419. \newdimen\normallineskiplimit \normallineskiplimit=0pt
  420. \newcount\interfootnotelinepenalty \interfootnotelinepenalty=100
  421. \def\magstephalf{1095 }
  422. \def\magstep#1{\ifcase#1 \@m\or 1200\or 1440\or 1728\or
  423.                2074\or 2488\fi\relax}
  424. \def\frenchspacing{\sfcode`\.\@m \sfcode`\?\@m \sfcode`\!\@m
  425.   \sfcode`\:\@m \sfcode`\;\@m \sfcode`\,\@m}
  426. \def\nonfrenchspacing{\sfcode`\.3000\sfcode`\?3000\sfcode`\!3000%
  427.   \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250 }
  428. \def\normalbaselines{\lineskip\normallineskip
  429.   \baselineskip\normalbaselineskip \lineskiplimit\normallineskiplimit}
  430. \def\^^M{\ } % control <return> = control <space>
  431. \let\^^I\^^M % same for <tab>
  432. \def\lq{`}
  433. \def\rq{'}
  434. \def\lbrack{[}
  435. \def\rbrack{]}
  436. \def \aa {\r a}
  437. \def \AA {\r A}
  438. \let\endgraf=\par
  439. \let\endline=\cr
  440. \def\space{ }
  441. \let\empty\@empty
  442. \def\null{\hbox{}}
  443. \let\bgroup={
  444. \let\egroup=}
  445. {\catcode`\^^M=\active % these lines must end with %
  446.   \gdef\obeylines{\catcode`\^^M\active \let^^M\par}%
  447.   \global\let^^M\par} % this is in case ^^M appears in a \write
  448. \def\obeyspaces{\catcode`\ \active}
  449. {\obeyspaces\global\let =\space}
  450. \long\def \loop #1\repeat{%
  451.   \def\iterate{#1\relax  % Extra \relax
  452.                \expandafter\iterate\fi
  453.                }%
  454.   \iterate
  455.   \let\iterate\relax
  456. \let\repeat=\fi
  457. \def\nointerlineskip{\prevdepth-\@m\p@}
  458. \def\offinterlineskip{\baselineskip-\@m\p@
  459.   \lineskip\z@ \lineskiplimit\maxdimen}
  460. \def\vglue{\afterassignment\vgl@\skip@=}
  461. \def\vgl@{\par \dimen@\prevdepth \hrule \@height\z@
  462.   \nobreak\vskip\skip@ \prevdepth\dimen@}
  463. \def\hglue{\afterassignment\hgl@\skip@=}
  464. \def\hgl@{\leavevmode \count@\spacefactor \vrule \@width\z@
  465.   \nobreak\hskip\skip@ \spacefactor\count@}
  466. \def\slash{/\penalty\exhyphenpenalty} % a `/' that acts like a `-'
  467. \def\break{\penalty-\@M}
  468. \def\nobreak{\penalty \@M}
  469. \def\allowbreak{\penalty \z@}
  470. \def\filbreak{\par\vfil\penalty-200\vfilneg}
  471. \def\goodbreak{\par\penalty-500 }
  472. \def\eject{\par\break}
  473. \def\removelastskip{\ifdim\lastskip=\z@\else\vskip-\lastskip\fi}
  474. \def\smallbreak{\par\ifdim\lastskip<\smallskipamount
  475.   \removelastskip\penalty-50\smallskip\fi}
  476. \def\medbreak{\par\ifdim\lastskip<\medskipamount
  477.   \removelastskip\penalty-100\medskip\fi}
  478. \def\bigbreak{\par\ifdim\lastskip<\bigskipamount
  479.   \removelastskip\penalty-200\bigskip\fi}
  480. \def\m@th{\mathsurround\z@}
  481. \def\underbar#1{\underline{\sbox\tw@{#1}\dp\tw@\z@\box\tw@}}
  482. \newbox\strutbox
  483. \def\strut{\relax\ifmmode\copy\strutbox\else\unhcopy\strutbox\fi}
  484. \def\hidewidth{\hskip\hideskip}
  485. \def\narrower{%
  486.   \advance\leftskip\parindent
  487.   \advance\rightskip\parindent}
  488. \chardef\%=`\%
  489. \chardef\&=`\&
  490. \chardef\#=`\#
  491. \def\leavevmode{\unhbox\voidb@x}
  492. \def\mathhexbox#1#2#3{\mbox{$\m@th \mathchar"#1#2#3$}}
  493. \def\ialign{\everycr{}\tabskip\z@skip\halign} % initialized \halign
  494. \def\oalign#1{\leavevmode\vtop{\baselineskip\z@skip \lineskip.25ex%
  495.   \ialign{##\crcr#1\crcr}}}
  496. \def\o@lign{\lineskiplimit\z@ \oalign}
  497. \def\ooalign{\lineskiplimit-\maxdimen \oalign}
  498. \def\sh@ft#1{\dimen@.00#1ex\multiply\dimen@\fontdimen1\font
  499.   \kern-.0156\dimen@} % compensate for slant in lowered accents
  500. \def\hrulefill{\leavevmode\leaders\hrule\hfill\kern\z@}
  501. \def\dotfill{%
  502.   \leavevmode
  503.   \cleaders \hb@xt@ .44em{\hss.\hss}\hfill
  504.   \kern\z@}
  505. \sfcode`\)=0 \sfcode`\'=0 \sfcode`\]=0
  506. \def\showoverfull{\tracingonline\@ne}
  507. \gdef\showoutput{\tracingoutput\@ne
  508.     \showboxbreadth\maxdimen\showboxdepth\maxdimen\errorstopmode
  509.     \showoverfull}
  510. \gdef\tracingall{\tracingcommands\tw@\tracingstats\tw@
  511.   \tracingpages\@ne\tracinglostchars\@ne
  512.   \tracingmacros\tw@\tracingparagraphs\@ne\tracingrestores\@ne
  513.   \errorcontextlines\maxdimen\showoutput}
  514. \nonfrenchspacing
  515. %%% From File: ltvers.dtx
  516. \def\fmtname{LaTeX2e}
  517. \edef\fmtversion{1996/12/01}
  518. \def\reserved@a#1/#2/#3\@nil{%
  519.   \count@\year
  520.   \advance\count@-#1\relax
  521.   \multiply\count@ by 12\relax
  522.   \advance\count@\month
  523.   \advance\count@-#2\relax}
  524. \expandafter\reserved@a\fmtversion\@nil
  525. \ifnum\count@>17
  526.   \typeout{^^J%
  527. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!^^J%
  528. !  You are attempting to make a LaTeX format from a source file^^J%
  529. !  That is more than one year old.^^J%
  530. !^^J%
  531. !  If you enter <return> to scroll past this message then the format^^J%
  532. !  will be built, but please consider obtaining newer source files^^J%
  533. !  before continuing to build LaTeX.^^J%
  534. !^^J%
  535. !  LaTeX is re-issued every 6 months, in June and December.^^J%
  536. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!^^J%
  537.    \errhelp{To avoid this error message, obtain new LaTeX sources.}
  538.    \errmessage{LaTeX source files more than 1 year old!}
  539. \let\reserved@a\relax
  540. \everyjob{\typeout{\fmtname
  541.                                      \space<\fmtversion>}}
  542. \immediate\write16{\fmtname
  543.                                      \space<\fmtversion>}
  544. %%% From File: ltdefns.dtx
  545. \def\two@digits#1{\ifnum#1<10 0\fi\number#1}
  546. \def\typeout#1{\begingroup\set@display@protect
  547.     \immediate\write\@unused{#1}\endgroup}
  548. \newlinechar`\^^J
  549. \let\@@par=\par
  550. \let\@@hyph=\-        % Save original primitive definition
  551. \def\-{\discretionary{-}{}{}}
  552. \let\@dischyph=\-
  553. \let\@@italiccorr=\/
  554. \def\@height{height} \def\@depth{depth} \def\@width{width}
  555. \def\@minus{minus}
  556. \def\@plus{plus}
  557. \def\hb@xt@{\hbox to}
  558. \message{hacks,}
  559. \def\typein{%
  560.   \let\@typein\relax
  561.   \@testopt\@xtypein\@typein}
  562. \def\@xtypein[#1]#2{%
  563.   \typeout{#2}%
  564.   \advance\endlinechar\@M
  565.   \read\@inputcheck to#1%
  566.   \advance\endlinechar-\@M
  567.   \@typein}
  568. \def\@namedef#1{\expandafter\def\csname #1\endcsname}
  569. \def\@nameuse#1{\csname #1\endcsname}
  570. \def\@cons#1#2{\begingroup\let\@elt\relax\xdef#1{#1\@elt #2}\endgroup}
  571. \def\@car#1#2\@nil{#1}
  572. \def\@cdr#1#2\@nil{#2}
  573. \def\@carcube#1#2#3#4\@nil{#1#2#3}
  574. \def\@preamblecmds{}
  575. \def\@onlypreamble#1{%
  576.   \expandafter\gdef\expandafter\@preamblecmds\expandafter{%
  577.        \@preamblecmds\do#1}}
  578. \@onlypreamble\@onlypreamble
  579. \@onlypreamble\@preamblecmds
  580. \def\@star@or@long#1{%
  581.   \@ifstar
  582.    {\let\l@ngrel@x\relax#1}%
  583.    {\let\l@ngrel@x\long#1}}
  584. \let\l@ngrel@x\relax
  585. \def\newcommand{\@star@or@long\new@command}
  586. \def\new@command#1{%
  587.   \@testopt{\@newcommand#1}0}
  588. \def\@newcommand#1[#2]{%
  589.   \@ifnextchar [{\@xargdef#1[#2]}%
  590.                 {\@argdef#1[#2]}}
  591. \long\def\@argdef#1[#2]#3{%
  592.    \@ifdefinable #1{\@yargdef#1\@ne{#2}{#3}}}
  593. \long\def\@xargdef#1[#2][#3]#4{%
  594.   \@ifdefinable#1{%
  595.      \expandafter\def\expandafter#1\expandafter{%
  596.           \expandafter
  597.           \@protected@testopt
  598.           \expandafter
  599.           #1%
  600.           \csname\string#1\expandafter\endcsname
  601.           {#3}}%
  602.        \expandafter\@yargdef
  603.           \csname\string#1\endcsname
  604.            \tw@
  605.            {#2}%
  606.            {#4}}}
  607. \def\@testopt#1#2{%
  608.   \@ifnextchar[{#1}{#1[#2]}}
  609. \def\@protected@testopt#1{%%
  610.   \ifx\protect\@typeset@protect
  611.     \expandafter\@testopt
  612.   \else
  613.     \@x@protect#1%
  614.   \fi}
  615. \long\def\@yargdef#1#2#3{%
  616.   \@tempcnta#3\relax
  617.   \advance \@tempcnta \@ne
  618.   \let\@hash@\relax
  619.   \edef\reserved@a{\ifx#2\tw@ [\@hash@1]\fi}%
  620.   \@tempcntb #2%
  621.   \@whilenum\@tempcntb <\@tempcnta
  622.      \do{%
  623.          \edef\reserved@a{\reserved@a\@hash@\the\@tempcntb}%
  624.          \advance\@tempcntb \@ne}%
  625.   \let\@hash@##%
  626.   \l@ngrel@x\expandafter\def\expandafter#1\reserved@a}
  627. \long\def\@reargdef#1[#2]{%
  628.   \@yargdef#1\@ne{#2}}
  629. \def\renewcommand{\@star@or@long\renew@command}
  630. \def\renew@command#1{%
  631.   {\escapechar\m@ne\xdef\@gtempa{{\string#1}}}%
  632.   \expandafter\@ifundefined\@gtempa
  633.      {\@latex@error{\noexpand#1undefined}\@ehc}%
  634.      \relax
  635.   \let\@ifdefinable\@rc@ifdefinable
  636.   \new@command#1}
  637. \long\def\@ifdefinable #1#2{%
  638.       \edef\reserved@a{\expandafter\@gobble\string #1}%
  639.      \@ifundefined\reserved@a
  640.          {\edef\reserved@b{\expandafter\@carcube \reserved@a xxx\@nil}%
  641.           \ifx \reserved@b\@qend \@notdefinable\else
  642.             \ifx \reserved@a\@qrelax \@notdefinable\else
  643.               #2%
  644.             \fi
  645.           \fi}%
  646.          \@notdefinable}
  647. \let\@@ifdefinable\@ifdefinable
  648. \long\def\@rc@ifdefinable#1#2{%
  649.   \let\@ifdefinable\@@ifdefinable
  650.   #2}
  651. \def\newenvironment{\@star@or@long\new@environment}
  652. \def\new@environment#1{%
  653.   \@testopt{\@newenva#1}0}
  654. \def\@newenva#1[#2]{%
  655.    \@ifnextchar [{\@newenvb#1[#2]}{\@newenv{#1}{[#2]}}}
  656. \def\@newenvb#1[#2][#3]{\@newenv{#1}{[#2][#3]}}
  657. \def\renewenvironment{\@star@or@long\renew@environment}
  658. \def\renew@environment#1{%
  659.   \@ifundefined{#1}%
  660.      {\@latex@error{Environment #1 undefined}\@ehc
  661.      }\relax
  662.   \expandafter\let\csname#1\endcsname\relax
  663.   \expandafter\let\csname end#1\endcsname\relax
  664.   \new@environment{#1}}
  665. \long\def\@newenv#1#2#3#4{%
  666.   \@ifundefined{#1}%
  667.     {\expandafter\let\csname#1\expandafter\endcsname
  668.                          \csname end#1\endcsname}%
  669.     \relax
  670.   \expandafter\new@command
  671.      \csname #1\endcsname#2{#3}%
  672.      \l@ngrel@x\expandafter\def\csname end#1\endcsname{#4}}
  673. \def\newif#1{%
  674.   \count@\escapechar \escapechar\m@ne
  675.     \let#1\iffalse
  676.     \@if#1\iftrue
  677.     \@if#1\iffalse
  678.   \escapechar\count@}
  679. \def\@if#1#2{%
  680.   \expandafter\def\csname\expandafter\@gobbletwo\string#1%
  681.                     \expandafter\@gobbletwo\string#2\endcsname
  682.                        {\let#1#2}}
  683. \def\providecommand{\@star@or@long\provide@command}
  684. \def\provide@command#1{%
  685.   {\escapechar\m@ne\xdef\@gtempa{{\string#1}}}%
  686.   \expandafter\@ifundefined\@gtempa
  687.     {\def\reserved@a{\new@command#1}}%
  688.     {\def\reserved@a{\renew@command\reserved@a}}%
  689.    \reserved@a}%
  690. \def\CheckCommand{\@star@or@long\check@command}
  691. \@onlypreamble\CheckCommand
  692. \def\check@command#1#2#{\@check@c#1{#2}}
  693. \@onlypreamble\check@command
  694. \long\def\@check@c#1#2#3{%
  695.   \expandafter\let\csname\string\reserved@a\endcsname\relax
  696.   \renew@command\reserved@a#2{#3}%
  697.   \@ifundefined{\string\reserved@a}%
  698.    {\@check@eq#1\reserved@a}%
  699.    {\expandafter\@check@eq
  700.            \csname\string#1\expandafter\endcsname
  701.            \csname\string\reserved@a\endcsname}}
  702. \@onlypreamble\@check@c
  703. \def\@check@eq#1#2{%
  704.   \ifx#1#2\else
  705.      \@latex@warning@no@line
  706.                {Command \noexpand#1 has
  707.                 changed.\MessageBreak
  708.                 Check if current package is valid}%
  709.   \fi}
  710. \@onlypreamble\@check@eq
  711. \long\def \@gobble #1{}
  712. \long\def \@gobbletwo #1#2{}
  713. \long\def \@gobblefour #1#2#3#4{}
  714. \long\def\@firstofone#1{#1}
  715. \long\def\@firstoftwo#1#2{#1}
  716. \long\def\@secondoftwo#1#2{#2}
  717. \let\@iden\@firstofone
  718. \def\@expandtwoargs#1#2#3{%
  719. \edef\reserved@a{\noexpand#1{#2}{#3}}\reserved@a}
  720. \edef\@backslashchar{\expandafter\@gobble\string\\}
  721. \def\@unexpandable@protect{\noexpand\protect\noexpand}
  722. \def\DeclareRobustCommand{\@star@or@long\declare@robustcommand}
  723. \def\declare@robustcommand#1{%
  724.    \ifx#1\@undefined\else\ifx#1\relax\else
  725.       \@latex@info{Redefining \string#1}%
  726.    \fi\fi
  727.    \edef\reserved@a{\string#1}%
  728.    \def\reserved@b{#1}%
  729.    \edef\reserved@b{\expandafter\strip@prefix\meaning\reserved@b}%
  730.    \edef#1{%
  731.       \ifx\reserved@a\reserved@b
  732.          \noexpand\x@protect
  733.          \noexpand#1%
  734.       \fi
  735.       \noexpand\protect
  736.       \expandafter\noexpand\csname
  737.          \expandafter\@gobble\string#1 \endcsname
  738.    }%
  739.    \let\@ifdefinable\@rc@ifdefinable
  740.    \expandafter\new@command\csname
  741.       \expandafter\@gobble\string#1 \endcsname
  742. \def\x@protect#1{%
  743.    \ifx\protect\@typeset@protect\else
  744.       \@x@protect#1%
  745.    \fi
  746. \def\@x@protect#1\fi#2#3{%
  747.    \fi\protect#1%
  748. \let\@typeset@protect\relax
  749. \def\set@display@protect{\let\protect\string}
  750. \def\set@typeset@protect{\let\protect\@typeset@protect}
  751. \def\protected@edef{%
  752.    \let\@@protect\protect
  753.    \let\protect\@unexpandable@protect
  754.    \afterassignment\restore@protect
  755.    \edef
  756. \def\protected@xdef{%
  757.    \let\@@protect\protect
  758.    \let\protect\@unexpandable@protect
  759.    \afterassignment\restore@protect
  760.    \xdef
  761. \def\unrestored@protected@xdef{%
  762.    \let\protect\@unexpandable@protect
  763.    \xdef
  764. \def\restore@protect{\let\protect\@@protect}
  765. \set@typeset@protect
  766. \def\@ifundefined#1{%
  767.   \expandafter\ifx\csname#1\endcsname\relax
  768.     \expandafter\@firstoftwo
  769.   \else
  770.     \expandafter\@secondoftwo
  771.   \fi}
  772. \edef\@qend{\expandafter\@cdr\string\end\@nil}
  773. \edef\@qrelax{\expandafter\@cdr\string\relax\@nil}
  774. \def\@ifnextchar#1#2#3{%
  775.   \let\reserved@d=#1%
  776.   \def\reserved@a{#2}\def\reserved@b{#3}%
  777.   \futurelet\@let@token\@ifnch}
  778. \def\@ifnch{%
  779.   \ifx\@let@token\@sptoken
  780.     \let\reserved@c\@xifnch
  781.   \else
  782.     \ifx\@let@token\reserved@d
  783.       \let\reserved@c\reserved@a
  784.     \else
  785.       \let\reserved@c\reserved@b
  786.     \fi
  787.   \fi
  788.   \reserved@c}
  789. \def\:{\let\@sptoken= } \:  % this makes \@sptoken a space token
  790. \def\:{\@xifnch} \expandafter\def\: {\futurelet\@let@token\@ifnch}
  791. \def\makeatletter{\catcode`\@11\relax}
  792. \def\makeatother{\catcode`\@12\relax}
  793. \def\@ifstar#1{\@ifnextchar *{\@firstoftwo{#1}}}
  794. \long\def\@dblarg#1{\@ifnextchar[{#1}{\@xdblarg{#1}}}
  795. \long\def\@xdblarg#1#2{#1[{#2}]{#2}}
  796. \def\@sanitize{\@makeother\ \@makeother\\\@makeother\$\@makeother\&%
  797. \@makeother\#\@makeother\^\@makeother\_\@makeother\%\@makeother\~}
  798. \def \@onelevel@sanitize #1{%
  799.   \edef #1{\expandafter\strip@prefix
  800.            \meaning #1}%
  801. %%% From File: ltalloc.dtx
  802. \chardef\@xxxii=32
  803. \mathchardef\@Mi=10001
  804. \mathchardef\@Mii=10002
  805. \mathchardef\@Miii=10003
  806. \mathchardef\@Miv=10004
  807. \newcount\@tempcnta
  808. \newcount\@tempcntb
  809. \newif\if@tempswa
  810. \newdimen\@tempdima
  811. \newdimen\@tempdimb
  812. \newdimen\@tempdimc
  813. \newbox\@tempboxa
  814. \newskip\@tempskipa
  815. \newskip\@tempskipb
  816. \newtoks\@temptokena
  817. \newskip\@flushglue \@flushglue = 0pt plus 1fil
  818. %%% From File: ltcntrl.dtx
  819. \message{control,}
  820. \long\def\@whilenum#1\do #2{\ifnum #1\relax #2\relax\@iwhilenum{#1\relax
  821.      #2\relax}\fi}
  822. \long\def\@iwhilenum#1{\ifnum #1\expandafter\@iwhilenum
  823.          \else\expandafter\@gobble\fi{#1}}
  824. \long\def\@whiledim#1\do #2{\ifdim #1\relax#2\@iwhiledim{#1\relax#2}\fi}
  825. \long\def\@iwhiledim#1{\ifdim #1\expandafter\@iwhiledim
  826.         \else\expandafter\@gobble\fi{#1}}
  827. \long\def\@whilesw#1\fi#2{#1#2\@iwhilesw{#1#2}\fi\fi}
  828. \long\def\@iwhilesw#1\fi{#1\expandafter\@iwhilesw
  829.          \else\@gobbletwo\fi{#1}\fi}
  830. \def\@nnil{\@nil}
  831. \def\@empty{}
  832. \def\@fornoop#1\@@#2#3{}
  833. \long\def\@for#1:=#2\do#3{%
  834.   \expandafter\def\expandafter\@fortmp\expandafter{#2}%
  835.   \ifx\@fortmp\@empty \else
  836.     \expandafter\@forloop#2,\@nil,\@nil\@@#1{#3}\fi}
  837. \long\def\@forloop#1,#2,#3\@@#4#5{\def#4{#1}\ifx #4\@nnil \else
  838.        #5\def#4{#2}\ifx #4\@nnil \else#5\@iforloop #3\@@#4{#5}\fi\fi}
  839. \long\def\@iforloop#1,#2\@@#3#4{\def#3{#1}\ifx #3\@nnil
  840.        \expandafter\@fornoop \else
  841.       #4\relax\expandafter\@iforloop\fi#2\@@#3{#4}}
  842. \def\@tfor#1:={\@tf@r#1 }
  843. \long\def\@tf@r#1#2\do#3{\def\@fortmp{#2}\ifx\@fortmp\space\else
  844.     \@tforloop#2\@nil\@nil\@@#1{#3}\fi}
  845. \long\def\@tforloop#1#2\@@#3#4{\def#3{#1}\ifx #3\@nnil
  846.        \expandafter\@fornoop \else
  847.       #4\relax\expandafter\@tforloop\fi#2\@@#3{#4}}
  848. \long\def\@break@tfor#1\@@#2#3{\fi\fi}
  849. \def\@removeelement#1#2#3{%
  850.   \def\reserved@a##1,#1,##2\reserved@a{##1,##2\reserved@b}%
  851.   \def\reserved@b##1,\reserved@b##2\reserved@b{%
  852.     \ifx,##1\@empty\else##1\fi}%
  853.   \edef#3{%
  854.     \expandafter\reserved@b\reserved@a,#2,\reserved@b,#1,\reserved@a}}
  855. %%% From File: lterror.dtx
  856. \expandafter\let\csname ver@autoerr.sty\endcsname\fmtversion
  857. \let\MessageBreak\relax
  858. \DeclareRobustCommand{\GenericInfo}[2]{%
  859.    \begingroup
  860.       \def\MessageBreak{^^J#1}%
  861.       \set@display@protect
  862.       \immediate\write\m@ne{#2\on@line.}%
  863.    \endgroup
  864. \DeclareRobustCommand{\GenericWarning}[2]{%
  865.    \begingroup
  866.       \def\MessageBreak{^^J#1}%
  867.       \set@display@protect
  868.       \immediate\write\@unused{^^J#2\on@line.^^J}%
  869.    \endgroup
  870. \bgroup
  871. \lccode`\@=`\ %
  872. \lccode`\~=`\ %
  873. \lccode`\}=`\ %
  874. \lccode`\{=`\ %
  875. \lccode`\T=`\T%
  876. \lccode`\H=`\H%
  877. \catcode`\ =11\relax%
  878. \lowercase{%
  879. \egroup%
  880. \dimen@\ifx\@TeXversion\@undefined4\else\@TeXversion\fi\p@%
  881. \ifdim\dimen@>3.14\p@%
  882. \DeclareRobustCommand{\GenericError}[4]{%
  883. \begingroup%
  884. \immediate\write\@unused{}%
  885. \def\MessageBreak{^^J}%
  886. \set@display@protect%
  887. \edef%
  888. \@err@                                                                 %
  889. {{#4}}%
  890. \errhelp
  891. \@err@                                                                 %
  892. \@err@                                                                 %
  893. \@empty
  894. \def\MessageBreak{^^J#1}%
  895. \def~{\errmessage{%
  896. #2.^^J^^J%
  897. #3^^J%
  898. Type  H <return>  for immediate help%
  899. \@err@                                                                 %
  900. \endgroup}%
  901. \else%
  902. \DeclareRobustCommand{\GenericError}[4]{%
  903. \begingroup%
  904. \immediate\write\@unused{}%
  905. \def\MessageBreak{^^J}%
  906. \set@display@protect%
  907. \edef%
  908. \@err@                                                                 %
  909. {{#4}}%
  910. \errhelp
  911. \@err@                                                                 %
  912. \@err@                                                                 %
  913. \errmessage
  914. \def\MessageBreak{^^J#1}%
  915. \def~{\typeout{! %
  916. #2.^^J^^J%
  917. #3^^J%
  918. Type  H <return>  for immediate help.}%
  919. \@err@                                                                 %
  920. \endgroup}%
  921. \fi}%
  922. \gdef\PackageError#1#2#3{%
  923.    \GenericError{%
  924.       (#1)\@spaces\@spaces\@spaces\@spaces
  925.    }{%
  926.       Package #1 Error: #2%
  927.    }{%
  928.       See the #1 package documentation for explanation.%
  929.    }{#3}%
  930. \def\PackageWarning#1#2{%
  931.    \GenericWarning{%
  932.       (#1)\@spaces\@spaces\@spaces\@spaces
  933.    }{%
  934.       Package #1 Warning: #2%
  935.    }%
  936. \def\PackageWarningNoLine#1#2{%
  937.    \PackageWarning{#1}{#2\@gobble}%
  938. \def\PackageInfo#1#2{%
  939.    \GenericInfo{%
  940.       (#1) \@spaces\@spaces\@spaces
  941.    }{%
  942.       Package #1 Info: #2%
  943.    }%
  944. \gdef\ClassError#1#2#3{%
  945.    \GenericError{%
  946.       (#1) \space\@spaces\@spaces\@spaces
  947.    }{%
  948.       Class #1 Error: #2%
  949.    }{%
  950.       See the #1 class documentation for explanation.%
  951.    }{#3}%
  952. \def\ClassWarning#1#2{%
  953.    \GenericWarning{%
  954.       (#1) \space\@spaces\@spaces\@spaces
  955.    }{%
  956.       Class #1 Warning: #2%
  957.    }%
  958. \def\ClassWarningNoLine#1#2{%
  959.    \ClassWarning{#1}{#2\@gobble}%
  960. \def\ClassInfo#1#2{%
  961.    \GenericInfo{%
  962.       (#1) \space\space\@spaces\@spaces
  963.    }{%
  964.       Class #1 Info: #2%
  965.    }%
  966. \gdef\@latex@error#1#2{%
  967.    \GenericError{%
  968.       \space\space\space\@spaces\@spaces\@spaces
  969.    }{%
  970.       LaTeX Error: #1%
  971.    }{%
  972.       See the LaTeX manual or LaTeX Companion for explanation.%
  973.    }{#2}%
  974. \def\@latex@warning#1{%
  975.    \GenericWarning{%
  976.       \space\space\space\@spaces\@spaces\@spaces
  977.    }{%
  978.       LaTeX Warning: #1%
  979.    }%
  980. \def\@latex@warning@no@line#1{%
  981.    \@latex@warning{#1\@gobble}}
  982. \def\@latex@info#1{%
  983.    \GenericInfo{%
  984.       \@spaces\@spaces\@spaces
  985.    }{%
  986.       LaTeX Info: #1%
  987.    }%
  988. \def\@latex@info@no@line#1{%
  989.   \@latex@info{#1\@gobble}}
  990. \let\c@errorcontextlines\errorcontextlines
  991. \c@errorcontextlines=-1
  992. \ifnum\inputlineno=\m@ne
  993.   \let\on@line\@empty
  994. \else
  995.   \def\on@line{ on input line \the\inputlineno}
  996. \let\@warning\@latex@warning
  997. \let\@@warning\@latex@warning@no@line
  998. \global\let\@latexerr\@latex@error
  999. \def\@spaces{\space\space\space\space}
  1000. \gdef\@eha{%
  1001.   Your command was ignored.\MessageBreak
  1002.   Type \space I <command> <return> \space to replace it %
  1003.   with another command,\MessageBreak
  1004.   or \space <return> \space to continue without it.}
  1005. \gdef\@ehb{%
  1006.   You've lost some text. \space \@ehc}
  1007. \gdef\@ehc{%
  1008.   Try typing \space <return> %
  1009.   \space to proceed.\MessageBreak
  1010.   If that doesn't work, type \space X <return> \space to quit.}
  1011. \gdef\@ehd{%
  1012.   You're in trouble here.  \space\@ehc}
  1013. \gdef\@notdefinable{%
  1014.   \@latex@error{%
  1015.    Command \@backslashchar\reserved@a\space already defined%
  1016. }\@eha}
  1017. \gdef\@nolnerr{%
  1018.   \@latex@error{There's no line here to end}\@eha}
  1019. \gdef\@nocounterr#1{%
  1020.   \@latex@error{No counter '#1' defined}\@eha}
  1021. \gdef\@nocnterr{\@nocounterr?}
  1022. \gdef\@ctrerr{%
  1023.   \@latex@error{Counter too large}\@ehb}
  1024. \gdef\@nodocument{%
  1025.   \@latex@error{Missing \protect\begin{document}}\@ehd}
  1026. \gdef\@badend#1{%
  1027.   \@latex@error{\protect\begin{\@currenvir}\@currenvline
  1028.                      \space ended by \protect\end{#1}}\@eha}
  1029. \gdef\@badmath{%
  1030.   \@latex@error{Bad math environment delimiter}\@eha}
  1031. \gdef\@toodeep{%
  1032.   \@latex@error{Too deeply nested}\@ehd}
  1033. \gdef\@badpoptabs{%
  1034.   \@latex@error{\protect\pushtabs\space and \protect\poptabs
  1035.       \space don't match}\@ehd}
  1036. \gdef\@badtab{%
  1037.  \@latex@error{Undefined tab position}\@ehd}
  1038. \gdef\@preamerr#1{%
  1039.   \begingroup
  1040.     \let\protect\relax
  1041.     \@latex@error{\ifcase #1 Illegal character\or
  1042.      Missing @-exp\or Missing p-arg\fi\space
  1043.      in array arg}\@ehd
  1044.   \endgroup}
  1045. \gdef\@badlinearg{%
  1046.   \@latex@error{%
  1047.        Bad \protect\line\space or \protect\vector
  1048.        \space argument}\@ehb}
  1049. \gdef\@parmoderr{%
  1050.   \@latex@error{Not in outer par mode}\@ehb}
  1051. \gdef\@fltovf{%
  1052.   \@latex@error{Too many unprocessed floats}\@ehb}
  1053. \gdef\@latexbug{%
  1054.   \@latex@error{This may be a LaTeX bug}{Call for help}}
  1055. \gdef\@noitemerr{%
  1056.   \@latex@error{Something's wrong--perhaps a missing %
  1057.       \protect\item}\@ehc}
  1058. \gdef\@notprerr{%
  1059.   \@latex@error{Can be used only in preamble}\@eha}
  1060. \gdef\@inmatherr#1{%
  1061.    \relax
  1062.    \ifmmode
  1063.  \@latex@error{Command \protect#1 invalid in math mode}\@ehc
  1064.    \fi}
  1065. %%% From File: ltpar.dtx
  1066. \message{par,}
  1067. \def\@setpar#1{\def\par{#1}\def\@par{#1}}
  1068. \def\@par{\let\par\@@par\par}
  1069. \def\@restorepar{\def\par{\@par}}
  1070. %%% From File: ltspace.dtx
  1071. \message{spacing,}
  1072. \def\pagebreak{\@testopt{\@no@pgbk-}4}
  1073. \def\nopagebreak{\@testopt\@no@pgbk4}
  1074. \def\@no@pgbk #1[#2]{%
  1075.   \ifvmode
  1076.     \penalty #1\@getpen{#2}%
  1077.   \else
  1078.     \@bsphack
  1079.     \vadjust{\penalty #1\@getpen{#2}}%
  1080.     \@esphack
  1081.   \fi}
  1082. \def\linebreak{\@testopt{\@no@lnbk-}4}
  1083. \def\nolinebreak{\@testopt\@no@lnbk4}
  1084. \def\@no@lnbk #1[#2]{%
  1085.   \ifvmode
  1086.     \@nolnerr
  1087.   \else
  1088.     \@tempskipa\lastskip
  1089.     \unskip
  1090.     \penalty #1\@getpen{#2}%
  1091.     \ifdim\@tempskipa>\z@
  1092.       \hskip\@tempskipa
  1093.       \ignorespaces
  1094.     \fi
  1095.   \fi}
  1096. \def\samepage{\interlinepenalty\@M
  1097.    \postdisplaypenalty\@M
  1098.    \interdisplaylinepenalty\@M
  1099.    \@beginparpenalty\@M
  1100.    \@endparpenalty\@M
  1101.    \@itempenalty\@M
  1102.    \@secpenalty\@M
  1103.    \interfootnotelinepenalty\@M}
  1104. \DeclareRobustCommand\\{%
  1105.   \let \reserved@e \relax
  1106.   \let \reserved@f \relax
  1107.   \@ifstar{\let \reserved@e \vadjust \let \reserved@f \nobreak
  1108.              \@xnewline}%
  1109.           \@xnewline}
  1110. \expandafter\let\expandafter\@normalcr
  1111.      \csname\expandafter\@gobble\string\\ \endcsname
  1112. \def\newline{\@normalcr\relax}
  1113. \def\@xnewline{\@ifnextchar[% ] bracket matching
  1114.                   \@newline
  1115.                  {\@gnewline\relax}}
  1116. \def\@newline[#1]{\let \reserved@e \vadjust
  1117.                    \@gnewline {\vskip #1}}
  1118. \def\@gnewline #1{%
  1119.   \ifvmode
  1120.     \@nolnerr
  1121.   \else
  1122.     \unskip \reserved@e {\reserved@f#1}\nobreak \hfil \break
  1123.   \fi}
  1124. \def\@getpen#1{\ifcase #1 \z@ \or \@lowpenalty\or
  1125.          \@medpenalty \or \@highpenalty
  1126.          \else \@M \fi}
  1127. \def\@nobreakfalse{\global\let\if@nobreak\iffalse}
  1128. \def\@nobreaktrue {\global\let\if@nobreak\iftrue}
  1129. \@nobreakfalse
  1130. \newdimen\@savsk
  1131. \newcount\@savsf
  1132. \def\@bsphack{%
  1133.   \relax
  1134.   \ifhmode
  1135.     \@savsk\lastskip
  1136.     \@savsf\spacefactor
  1137.   \fi}
  1138. \def\@esphack{%
  1139.   \relax
  1140.   \ifhmode
  1141.     \spacefactor\@savsf
  1142.     \ifdim\@savsk>\z@
  1143.       \ignorespaces
  1144.     \fi
  1145.   \fi}
  1146. \def\@Esphack{%
  1147.   \relax
  1148.   \ifhmode
  1149.     \spacefactor\@savsf
  1150.     \ifdim\@savsk>\z@
  1151.       \@ignoretrue
  1152.       \ignorespaces
  1153.     \fi
  1154.    \fi}
  1155. \def\@xaddvskip{%
  1156.   \ifdim\lastskip<\@tempskipb
  1157.     \vskip-\lastskip
  1158.     \vskip\@tempskipb
  1159.   \else
  1160.     \ifdim\@tempskipb<\z@
  1161.       \ifdim\lastskip<\z@
  1162.       \else
  1163.         \advance\@tempskipb\lastskip
  1164.         \vskip-\lastskip
  1165.         \vskip \@tempskipb
  1166.       \fi
  1167.     \fi
  1168.   \fi}
  1169. \def\addvspace#1{%
  1170.   \ifvmode
  1171.      \if@minipage\else
  1172.        \ifdim \lastskip =\z@
  1173.          \vskip #1\relax
  1174.        \else
  1175.        \@tempskipb#1\relax
  1176.          \@xaddvskip
  1177.        \fi
  1178.      \fi
  1179.   \else
  1180.     \@noitemerr
  1181.   \fi}
  1182. \def\addpenalty#1{%
  1183.   \ifvmode
  1184.     \if@minipage
  1185.     \else
  1186.       \if@nobreak
  1187.       \else
  1188.         \ifdim\lastskip=\z@
  1189.           \penalty#1\relax
  1190.         \else
  1191.           \@tempskipb\lastskip
  1192.           \vskip -\lastskip
  1193.           \penalty#1%
  1194.           \vskip\@tempskipb
  1195.         \fi
  1196.       \fi
  1197.     \fi
  1198.   \else
  1199.     \@noitemerr
  1200.   \fi}
  1201. \DeclareRobustCommand\vspace{\@ifstar\@vspacer\@vspace}
  1202. \def\@vspace #1{%
  1203.   \ifvmode
  1204.     \vskip #1
  1205.     \vskip\z@skip
  1206.    \else
  1207.      \@bsphack
  1208.      \vadjust{\@restorepar
  1209.               \vskip #1
  1210.               \vskip\z@skip
  1211.               }%
  1212.      \@esphack
  1213.    \fi}
  1214. \def\@vspacer#1{%
  1215.   \ifvmode
  1216.     \dimen@\prevdepth
  1217.     \hrule \@height\z@
  1218.     \nobreak
  1219.     \vskip #1
  1220.     \vskip\z@skip
  1221.     \prevdepth\dimen@
  1222.   \else
  1223.     \@bsphack
  1224.     \vadjust{\@restorepar
  1225.              \hrule \@height\z@
  1226.              \nobreak
  1227.              \vskip #1
  1228.              \vskip\z@skip}%
  1229.     \@esphack
  1230.   \fi}
  1231. \def\smallskip{\vspace\smallskipamount}
  1232. \def\medskip{\vspace\medskipamount}
  1233. \def\bigskip{\vspace\bigskipamount}
  1234. \newskip\smallskipamount \smallskipamount=3pt plus 1pt minus 1pt
  1235. \newskip\medskipamount   \medskipamount  =6pt plus 2pt minus 2pt
  1236. \newskip\bigskipamount   \bigskipamount =12pt plus 4pt minus 4pt
  1237. \DeclareRobustCommand{\nobreakspace}{%
  1238.    \leavevmode\nobreak\ }
  1239. \catcode `\~=13
  1240. \def~{\nobreakspace{}}
  1241. \expandafter\let\expandafter\@xobeysp\csname nobreakspace \endcsname
  1242. \DeclareRobustCommand{\,}{%
  1243.    \relax\ifmmode\mskip\thinmuskip\else\thinspace\fi
  1244. \def\@{\spacefactor\@m}
  1245. \DeclareRobustCommand\hspace{\@ifstar\@hspacer\@hspace}
  1246. \def\@hspace#1{\hskip #1\relax}
  1247. \def\@hspacer#1{\vrule \@width\z@\nobreak
  1248.                 \hskip #1\hskip \z@skip}
  1249. \newskip\fill
  1250. \fill = 0pt plus 1fill
  1251. \def\stretch#1{\z@ \@plus #1fill\relax}
  1252. \def\thinspace{\kern .16667em }
  1253. \def\negthinspace{\kern-.16667em }
  1254. \def\enspace{\kern.5em }
  1255. \def\enskip{\hskip.5em\relax}
  1256. \def\quad{\hskip1em\relax}
  1257. \def\qquad{\hskip2em\relax}
  1258. {\catcode`\^^M=13 \gdef\obeycr{\catcode`\^^M13 \def^^M{\\\relax}%
  1259.     \@gobblecr}%
  1260. {\catcode`\^^M=13 \gdef\@gobblecr{\@ifnextchar
  1261. \@gobble\ignorespaces}}
  1262. \gdef\restorecr{\catcode`\^^M5 }}
  1263. %%% From File: ltlogos.dtx
  1264. \def\TeX{T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX\@}
  1265. \DeclareRobustCommand{\LaTeX}{L\kern-.36em%
  1266.         {\sbox\z@ T%
  1267.          \vbox to\ht0{\hbox{$\m@th$%
  1268.                             \csname S@\f@size\endcsname
  1269.                             \fontsize\sf@size\z@
  1270.                             \math@fontsfalse\selectfont
  1271.                             A}%
  1272.                       \vss}%
  1273.         }%
  1274.         \kern-.15em%
  1275.         \TeX}
  1276. \DeclareRobustCommand{\LaTeXe}{\mbox{%
  1277.   \if b\expandafter\@car\f@series\@nil\boldmath\fi
  1278.   \LaTeX\kern.15em2$_{\textstyle\varepsilon}$}}
  1279. %%% From File: ltfiles.dtx
  1280. \message{files,}
  1281. \newread\@inputcheck
  1282. \newwrite\@unused
  1283. \newwrite\@mainaux
  1284. \newwrite\@partaux
  1285. \newif\if@filesw \@fileswtrue
  1286. \newif\if@partsw \@partswfalse
  1287. \newcount\@clubpenalty
  1288. \@clubpenalty \clubpenalty
  1289. \def\document{\endgroup
  1290.   \ifx\@unusedoptionlist\@empty\else
  1291.     \@latex@warning@no@line{Unused global option(s):^^J%
  1292.             \@spaces[\@unusedoptionlist]}%
  1293.   \fi
  1294.   \@colht\textheight
  1295.   \@colroom\textheight \vsize\textheight
  1296.   \columnwidth\textwidth
  1297.   \@clubpenalty\clubpenalty
  1298.   \if@twocolumn
  1299.     \advance\columnwidth -\columnsep
  1300.     \divide\columnwidth\tw@ \hsize\columnwidth \@firstcolumntrue
  1301.   \fi
  1302.   \hsize\columnwidth \linewidth\hsize
  1303.   \begingroup\@floatplacement\@dblfloatplacement
  1304.     \makeatletter\let\@writefile\@gobbletwo
  1305.     \global \let \@multiplelabels \relax
  1306.     \@input{\jobname.aux}%
  1307.   \endgroup
  1308.   \if@filesw
  1309.     \immediate\openout\@mainaux\jobname.aux
  1310.     \immediate\write\@mainaux{\relax}%
  1311.   \fi
  1312.   \process@table
  1313.   \let\glb@currsize\@empty  %% Force math initialisation.
  1314.   \normalsize
  1315.   \everypar{}%
  1316.   \@noskipsecfalse
  1317.   \let \@refundefined \relax
  1318.   \let\AtBeginDocument\@firstofone
  1319.   \@begindocumenthook
  1320.   \ifdim\topskip<1sp\global\topskip 1sp\relax\fi
  1321.   \global\@maxdepth\maxdepth
  1322.   \global\let\@begindocumenthook\@undefined
  1323.   \ifx\@listfiles\@undefined
  1324.     \global\let\@filelist\relax
  1325.     \global\let\@addtofilelist\@gobble
  1326.   \fi
  1327.   \gdef\do##1{\global\let ##1\@notprerr}%
  1328.   \@preamblecmds
  1329.   \global\let \@nodocument \relax
  1330.   \global\let\do\noexpand
  1331.   \ignorespaces}
  1332. \@onlypreamble\document
  1333. \def\nofiles{%
  1334.   \@fileswfalse
  1335.   \typeout{No auxiliary output files.^^J}%
  1336.   \long\def\protected@write##1##2##3%
  1337.     {\write\m@ne{}\if@nobreak\ifvmode\nobreak\fi\fi}%
  1338.   \let\makeindex\relax
  1339.   \let\makeglossary\relax}
  1340. \@onlypreamble\nofiles
  1341. \long\def \protected@write#1#2#3{%
  1342.       \begingroup
  1343.        \let\thepage\relax
  1344.        #2%
  1345.        \let\protect\@unexpandable@protect
  1346.        \edef\reserved@a{\write#1{#3}}%
  1347.        \reserved@a
  1348.       \endgroup
  1349.       \if@nobreak\ifvmode\nobreak\fi\fi
  1350. \let\@auxout=\@mainaux
  1351. \def\includeonly#1{%
  1352.   \@partswtrue
  1353.   \edef\@partlist{\zap@space#1 \@empty}}
  1354. \@onlypreamble\includeonly
  1355. \def\include#1{\relax
  1356.   \ifnum\@auxout=\@partaux
  1357.     \@latex@error{\string\include\space cannot be nested}\@eha
  1358.   \else \@include#1 \fi}
  1359. \def\@include#1 {%
  1360.   \clearpage
  1361.   \if@filesw
  1362.     \immediate\write\@mainaux{\string\@input{#1.aux}}%
  1363.   \fi
  1364.   \@tempswatrue
  1365.   \if@partsw
  1366.     \@tempswafalse
  1367.     \edef\reserved@b{#1}%
  1368.     \@for\reserved@a:=\@partlist\do
  1369.       {\ifx\reserved@a\reserved@b\@tempswatrue\fi}%
  1370.   \fi
  1371.   \if@tempswa
  1372.     \let\@auxout\@partaux
  1373.     \if@filesw
  1374.       \immediate\openout\@partaux #1.aux
  1375.       \immediate\write\@partaux{\relax}%
  1376.     \fi
  1377.     \@input@{#1.tex}%
  1378.     \clearpage
  1379.     \@writeckpt{#1}%
  1380.     \if@filesw
  1381.       \immediate\closeout\@partaux
  1382.     \fi
  1383.   \else
  1384.     \deadcycles\z@
  1385.     \@nameuse{cp@#1}%
  1386.   \fi
  1387.   \let\@auxout\@mainaux}
  1388. \def\@writeckpt#1{%
  1389.   \if@filesw
  1390.     \immediate\write\@partaux{\string\@setckpt{#1}\@charlb}%
  1391.     {\let\@elt\@wckptelt \cl@@ckpt}%
  1392.     \immediate\write\@partaux{\@charrb}%
  1393.   \fi}
  1394. \def\@wckptelt#1{%
  1395.   \immediate\write\@partaux{%
  1396.     \string\setcounter{#1}{\the\@nameuse{c@#1}}}}
  1397. \def\@setckpt#1{\global\@namedef{cp@#1}}
  1398. {\catcode`[=1 \catcode`]=2
  1399. \catcode`{=11 \catcode`}=11
  1400. \gdef\@charlb[{]
  1401. \gdef\@charrb[}]
  1402. ]% }brace matching
  1403. \long\def \IfFileExists#1#2#3{%
  1404.   \openin\@inputcheck#1 %
  1405.   \ifeof\@inputcheck
  1406.     \ifx\input@path\@undefined
  1407.       \def\reserved@a{#3}%
  1408.     \else
  1409.       \def\reserved@a{\@iffileonpath{#1}{#2}{#3}}%
  1410.     \fi
  1411.   \else
  1412.     \closein\@inputcheck
  1413.     \edef\@filef@und{#1 }%
  1414.     \def\reserved@a{#2}%
  1415.   \fi
  1416.   \reserved@a}
  1417. \long\def\@iffileonpath#1{%
  1418.   \let\reserved@a\@secondoftwo
  1419.   \expandafter\@tfor\expandafter\reserved@b\expandafter
  1420.              :\expandafter=\input@path\do{%
  1421.     \openin\@inputcheck\reserved@b#1 %
  1422.     \ifeof\@inputcheck\else
  1423.       \edef\@filef@und{\reserved@b#1 }%
  1424.       \let\reserved@a\@firstoftwo%
  1425.       \closein\@inputcheck
  1426.       \@break@tfor
  1427.     \fi}%
  1428.   \reserved@a}
  1429. \long\def \InputIfFileExists#1#2{%
  1430.   \IfFileExists{#1}%
  1431.     {#2\@addtofilelist{#1}\@@input \@filef@und}}
  1432. \def\input{\@ifnextchar\bgroup\@iinput\@@input}
  1433. \def\@iinput#1{%
  1434.   \InputIfFileExists{#1}{}%
  1435.   {\filename@parse{#1}%
  1436.    \edef\reserved@a{\noexpand\@missingfileerror
  1437.      {\filename@area\filename@base}%
  1438.      {\ifx\filename@ext\relax tex\else\filename@ext\fi}}%
  1439.    \reserved@a}}
  1440. \def\@input#1{%
  1441.   \IfFileExists{#1}{\@@input\@filef@und}{\typeout{No file #1.}}}
  1442. \def\@input@#1{\InputIfFileExists{#1}{}{\typeout{No file #1.}}}
  1443. \gdef\@missingfileerror#1#2{%
  1444.      \typeout{^^J! LaTeX Error: File `#1.#2' not found.^^J^^J%
  1445.       Type X to quit or <RETURN> to proceed,^^J%
  1446.       or enter new name. (Default extension: #2)^^J}%
  1447.      \message{Enter file name: }%
  1448.       {\endlinechar\m@ne
  1449.        \global\read\m@ne to\@gtempa}%
  1450.     \ifx\@gtempa\@empty
  1451.     \else
  1452.       \def\reserved@a{x}\ifx\reserved@a\@gtempa\batchmode\@@end\fi
  1453.       \def\reserved@a{X}\ifx\reserved@a\@gtempa\batchmode\@@end\fi
  1454.       \filename@parse\@gtempa
  1455.       \edef\filename@ext{%
  1456.         \ifx\filename@ext\relax#2\else\filename@ext\fi}%
  1457.      \edef\reserved@a{%
  1458.        \noexpand\InputIfFileExists
  1459.          {\filename@area\filename@base.\filename@ext}%
  1460.          {}%
  1461.          {\noexpand\@missingfileerror
  1462.             {\filename@area\filename@base}{\filename@ext}}}%
  1463.       \reserved@a
  1464.     \fi}
  1465. \def\@obsoletefile#1#2{%
  1466.    \@latex@warning@no@line{inputting `#1' instead of obsolete `#2'}}
  1467. \@onlypreamble\@obsoletefile
  1468. \let\@filelist\@gobble
  1469. \def\listfiles{%
  1470.   \let\listfiles\relax
  1471.   \def\@listfiles##1##2##3##4##5##6##7##8##9\@@{%
  1472.      \def\reserved@d{\\}%
  1473.      \@tfor\reserved@c:=##1##2##3##4##5##6##7##8\do{%
  1474.        \ifx\reserved@c\reserved@d
  1475.          \edef\filename@area{ \filename@area}%
  1476.        \fi}}%
  1477.   \def\@dofilelist{%
  1478.      \typeout{^^J *File List*}%
  1479.      \@for\@currname:=\@filelist\do{%
  1480.        \filename@parse\@currname
  1481.        \edef\reserved@a{%
  1482.           \filename@base.%
  1483.           \ifx\filename@ext\relax tex\else\filename@ext\fi}%
  1484.        \expandafter\let\expandafter\reserved@b
  1485.                               \csname ver@\reserved@a\endcsname
  1486.        \expandafter\expandafter\expandafter\@listfiles\expandafter
  1487.              \filename@area\filename@base\\\\\\\\\\\\\\\\\\\@@
  1488.        \typeout{%
  1489.          \filename@area\reserved@a
  1490.          \ifx\reserved@b\relax\else\@spaces\reserved@b\fi}}%
  1491.      \typeout{ ***********^^J}}}
  1492. \@onlypreamble\listfiles
  1493. \let\@dofilelist\relax
  1494. %%% From File: ltoutenc.dtx
  1495. \message{font encodings,}
  1496. \def\DeclareTextCommand{%
  1497.    \@dec@text@cmd\newcommand}
  1498. \def\ProvideTextCommand{%
  1499.    \@dec@text@cmd\providecommand}
  1500. \def\DeclareTextSymbol#1#2#3{%
  1501.    \@dec@text@cmd\chardef#1{#2}#3\relax}
  1502. \def\@dec@text@cmd#1#2#3{%
  1503.    \expandafter\def\expandafter#2%
  1504.       \expandafter{%
  1505.          \csname#3-cmd\expandafter\endcsname
  1506.          \expandafter#2%
  1507.          \csname#3\string#2\endcsname
  1508.       }%
  1509.    \let\@ifdefinable\@rc@ifdefinable
  1510.    \expandafter#1\csname#3\string#2\endcsname}
  1511. \@onlypreamble\DeclareTextCommand
  1512. \@onlypreamble\DeclareTextSymbol
  1513. \def\@current@cmd#1{%
  1514.    \ifx\protect\@typeset@protect
  1515.       \@inmathwarn#1%
  1516.    \else
  1517.       \noexpand#1\expandafter\@gobble
  1518.    \fi}
  1519. \def\@changed@cmd#1#2{%
  1520.    \ifx\protect\@typeset@protect
  1521.       \@inmathwarn#1%
  1522.       \expandafter\ifx\csname\cf@encoding\string#1\endcsname\relax
  1523.          \expandafter\ifx\csname ?\string#1\endcsname\relax
  1524.             \expandafter\def\csname ?\string#1\endcsname{%
  1525.                \TextSymbolUnavailable#1%
  1526.             }%
  1527.          \fi
  1528.          \global\expandafter\let
  1529.                \csname\cf@encoding \string#1\expandafter\endcsname
  1530.                \csname ?\string#1\endcsname
  1531.       \fi
  1532.       \csname\cf@encoding\string#1%
  1533.          \expandafter\endcsname
  1534.    \else
  1535.       \noexpand#1%
  1536.    \fi}
  1537. \gdef\TextSymbolUnavailable#1{%
  1538.    \@latex@error{%
  1539.       Command \protect#1 unavailable in encoding \cf@encoding%
  1540.    }\@eha}
  1541. \def\@inmathwarn#1{%
  1542.    \ifmmode
  1543.       \@latex@warning{Command \protect#1 invalid in math mode}%
  1544.    \fi}
  1545. \def\DeclareTextCommandDefault#1{%
  1546.    \DeclareTextCommand#1?}
  1547. \def\ProvideTextCommandDefault#1{%
  1548.    \ProvideTextCommand#1?}
  1549. \@onlypreamble\DeclareTextCommandDefault
  1550. \expandafter\let\csname?-cmd\endcsname\@changed@cmd
  1551. \def\DeclareTextAccent#1#2#3{%
  1552.    \DeclareTextCommand#1{#2}{\add@accent{#3}}}
  1553. \@onlypreamble\DeclareTextAccent
  1554. \def\add@accent#1#2{{%
  1555.    \setbox\@tempboxa\hbox{#2}%
  1556.    \accent#1 #2}}
  1557. \def\DeclareTextCompositeCommand#1#2#3#4{%
  1558.   \expandafter\let\expandafter\reserved@a\csname#2\string#1\endcsname
  1559.   \expandafter\expandafter\expandafter\ifx
  1560.   \expandafter\@car\reserved@a\relax\relax\@nil \@text@composite \else
  1561.       \edef\reserved@b##1{%
  1562.          \def\expandafter\noexpand
  1563.             \csname#2\string#1\endcsname####1{%
  1564.             \noexpand\@text@composite
  1565.                \expandafter\noexpand\csname#2\string#1\endcsname
  1566.                ####1\noexpand\@empty\noexpand\@text@composite
  1567.                {##1}}}%
  1568.       \expandafter\reserved@b\expandafter{\reserved@a{##1}}%
  1569.    \fi
  1570.    \expandafter\def\csname\expandafter\string\csname
  1571.       #2\endcsname\string#1-\string#3\endcsname{#4}}
  1572. \@onlypreamble\DeclareTextCompositeCommand
  1573. \def\@text@composite#1#2#3\@text@composite{%
  1574.    \expandafter\@text@composite@x
  1575.       \csname\string#1-\string#2\endcsname}
  1576. \def\@text@composite@x#1#2{%
  1577.    \ifx#1\relax
  1578.       \expandafter#2%
  1579.    \else
  1580.       #1%
  1581.    \fi}
  1582. \catcode\z@=11\relax
  1583. \def\DeclareTextComposite#1#2#3#4{%
  1584.    \def\reserved@a{\DeclareTextCompositeCommand#1{#2}{#3}}%
  1585.    \bgroup
  1586.       \lccode\z@#4%
  1587.       \lowercase{%
  1588.    \egroup
  1589.       \reserved@a ^^@}}
  1590. \catcode\z@=15\relax
  1591. \@onlypreamble\DeclareTextComposite
  1592. \def\UseTextSymbol#1#2{%
  1593.    \def\@wrong@font@char{\MessageBreak for \noexpand\symbol`\string#2'}%
  1594.    \let\@curr@enc\cf@encoding
  1595.    \@use@text@encoding{#1}%
  1596.    #2%
  1597.    \let\@wrong@font@char\@empty
  1598.    \@use@text@encoding\@curr@enc}
  1599. \def\UseTextAccent#1#2#3{%
  1600.    \let\@curr@enc\cf@encoding
  1601.    \@use@text@encoding{#1}%
  1602.    #2{\@use@text@encoding\@curr@enc#3}%
  1603.    \@use@text@encoding\@curr@enc}
  1604. \def\@use@text@encoding#1{%
  1605.    \edef\f@encoding{#1}%
  1606.    \xdef\font@name{%
  1607.       \csname\curr@fontshape/\f@size\endcsname}%
  1608.    \pickup@font
  1609.    \font@name
  1610.    \@@enc@update}
  1611. \def\DeclareTextSymbolDefault#1#2{%
  1612.    \DeclareTextCommandDefault#1{\UseTextSymbol{#2}#1}}
  1613. \def\DeclareTextAccentDefault#1#2{%
  1614.    \DeclareTextCommandDefault#1{\UseTextAccent{#2}#1}}
  1615. \@onlypreamble\DeclareTextSymbolDefault
  1616. \@onlypreamble\DeclareTextAccentDefault
  1617. \def\@tabacckludge#1{\expandafter\@changed@cmd\csname#1\endcsname\relax}
  1618. \let\a=\@tabacckludge
  1619. \DeclareTextAccentDefault{\"}{OT1}
  1620. \DeclareTextAccentDefault{\'}{OT1}
  1621. \DeclareTextAccentDefault{\.}{OT1}
  1622. \DeclareTextAccentDefault{\=}{OT1}
  1623. \DeclareTextAccentDefault{\H}{OT1}
  1624. \DeclareTextAccentDefault{\^}{OT1}
  1625. \DeclareTextAccentDefault{\`}{OT1}
  1626. \DeclareTextAccentDefault{\b}{OT1}
  1627. \DeclareTextAccentDefault{\c}{OT1}
  1628. \DeclareTextAccentDefault{\d}{OT1}
  1629. \DeclareTextAccentDefault{\r}{OT1}
  1630. \DeclareTextAccentDefault{\u}{OT1}
  1631. \DeclareTextAccentDefault{\v}{OT1}
  1632. \DeclareTextAccentDefault{\~}{OT1}
  1633. \DeclareTextSymbolDefault{\AE}{OT1}
  1634. \DeclareTextSymbolDefault{\L}{OT1}
  1635. \DeclareTextSymbolDefault{\OE}{OT1}
  1636. \DeclareTextSymbolDefault{\O}{OT1}
  1637. \DeclareTextSymbolDefault{\ae}{OT1}
  1638. \DeclareTextSymbolDefault{\i}{OT1}
  1639. \DeclareTextSymbolDefault{\j}{OT1}
  1640. \DeclareTextSymbolDefault{\l}{OT1}
  1641. \DeclareTextSymbolDefault{\oe}{OT1}
  1642. \DeclareTextSymbolDefault{\o}{OT1}
  1643. \DeclareTextSymbolDefault{\ss}{OT1}
  1644. \DeclareTextSymbolDefault{\textdollar}{OT1}
  1645. \DeclareTextSymbolDefault{\textemdash}{OT1}
  1646. \DeclareTextSymbolDefault{\textendash}{OT1}
  1647. \DeclareTextSymbolDefault{\textexclamdown}{OT1}
  1648. \DeclareTextSymbolDefault{\textquestiondown}{OT1}
  1649. \DeclareTextSymbolDefault{\textquotedblleft}{OT1}
  1650. \DeclareTextSymbolDefault{\textquotedblright}{OT1}
  1651. \DeclareTextSymbolDefault{\textquoteleft}{OT1}
  1652. \DeclareTextSymbolDefault{\textquoteright}{OT1}
  1653. \DeclareTextSymbolDefault{\textsterling}{OT1}
  1654. \DeclareTextSymbolDefault{\textasteriskcentered}{OMS}
  1655. \DeclareTextSymbolDefault{\textbackslash}{OMS}
  1656. \DeclareTextSymbolDefault{\textbar}{OMS}
  1657. \DeclareTextSymbolDefault{\textbraceleft}{OMS}
  1658. \DeclareTextSymbolDefault{\textbraceright}{OMS}
  1659. \DeclareTextSymbolDefault{\textbullet}{OMS}
  1660. \DeclareTextSymbolDefault{\textdaggerdbl}{OMS}
  1661. \DeclareTextSymbolDefault{\textdagger}{OMS}
  1662. \DeclareTextSymbolDefault{\textparagraph}{OMS}
  1663. \DeclareTextSymbolDefault{\textperiodcentered}{OMS}
  1664. \DeclareTextSymbolDefault{\textsection}{OMS}
  1665. \DeclareTextAccentDefault{\textcircled}{OMS}
  1666. \DeclareTextSymbolDefault{\textless}{OML}
  1667. \DeclareTextSymbolDefault{\textgreater}{OML}
  1668. \DeclareTextAccentDefault{\t}{OML}
  1669. \DeclareTextCommandDefault{\copyright}{\textcircled{c}}
  1670. \expandafter\def\expandafter
  1671.                 \copyright\expandafter{\expandafter{\copyright}}
  1672. \DeclareTextCommandDefault{\textasciicircum}{\^{}}
  1673. \DeclareTextCommandDefault{\textasciitilde}{\~{}}
  1674. \DeclareTextCommandDefault{\textcompwordmark}{\kern\z@}
  1675. \DeclareTextCommandDefault{\textunderscore}{%
  1676.    \leavevmode\mathunderscore}
  1677. \DeclareTextCommandDefault{\textvisiblespace}{%
  1678.    \mbox{\kern.06em\vrule \@height.3ex}%
  1679.    \vbox{\hrule \@width.3em}%
  1680.    \hbox{\vrule \@height.3ex}}
  1681. \DeclareTextCommandDefault{\textellipsis}{%
  1682.    .\kern\fontdimen3\font
  1683.    .\kern\fontdimen3\font
  1684.    .\kern\fontdimen3\font}
  1685. \DeclareTextCommandDefault{\textregistered}{\textcircled{\textsc r}}
  1686. \DeclareTextCommandDefault{\texttrademark}{\textsuperscript{TM}}
  1687. \DeclareTextCommandDefault{\SS}{SS}
  1688. \DeclareRobustCommand{\$}{\ifmmode\mathdollar\else\textdollar\fi}
  1689. \DeclareRobustCommand{\{}{\ifmmode\lbrace\else\textbraceleft\fi}
  1690. \DeclareRobustCommand{\}}{\ifmmode\rbrace\else\textbraceright\fi}
  1691. \DeclareRobustCommand{\P}{\ifmmode\mathparagraph\else\textparagraph\fi}
  1692. \DeclareRobustCommand{\S}{\ifmmode\mathsection\else\textsection\fi}
  1693. \DeclareRobustCommand{\dag}{\ifmmode{\dagger}\else\textdagger\fi}
  1694. \DeclareRobustCommand{\ddag}{\ifmmode{\ddagger}\else\textdaggerdbl\fi}
  1695. \DeclareRobustCommand{\_}{%
  1696.    \ifmmode\mathunderscore\else\textunderscore\fi}
  1697. \DeclareRobustCommand{\pounds}{%
  1698.    \ifmmode\mathsterling\else\textsterling\fi}
  1699. \DeclareRobustCommand{\dots}{%
  1700.    \ifmmode\mathellipsis\else\textellipsis\fi}
  1701. \let\ldots\dots
  1702. %%% From File: ltfssbas.dtx
  1703. %% Copyright (C) 1989-1996 Frank Mittelbach and Rainer Sch\"opf,
  1704. %% all rights reserved.
  1705. \expandafter\let\csname ver@autofss1.sty\endcsname\fmtversion
  1706. \def\@nomath#1{\relax\ifmmode
  1707.    \@font@warning{Command \noexpand#1invalid in math mode}\fi}
  1708. \gdef\no@alphabet@error#1{\relax \ifmmode
  1709.     \@latex@error{Math\space alphabet\space identifier\space
  1710.           \noexpand#1is\space undefined\space in\space math\space
  1711.            version\space `\math@version'}%
  1712.         {Your\space requested\space math\space alphabet\space
  1713.          is\space undefined\space in\space the\space current\space
  1714.           math\space version.^^JCheck\space the\space spelling\space
  1715.           or\space use\space the\space \noexpand\SetMathAlphabet\space
  1716.           command.}
  1717.      \fi}
  1718. \def\new@mathgroup{\alloc@8\mathgroup\chardef\sixt@@n}
  1719. \let\mathgroup\fam
  1720. \let\newfam\new@mathgroup
  1721. \@onlypreamble\new@mathgroup
  1722. \def\DeclareFontShape{\begingroup
  1723.    \nfss@catcodes
  1724.    \expandafter\endgroup
  1725.    \DeclareFontShape@}
  1726. \def\DeclareFontShape@#1#2#3#4#5#6{%
  1727.    \expandafter\ifx\csname #1+#2\endcsname\relax
  1728.      \@latex@error{Font family `#1+#2' unknown}\@eha
  1729.    \else
  1730.      \expandafter
  1731.        \xdef\csname#1/#2/#3/#4\endcsname{\expandafter\noexpand
  1732.                                    \csname #5\endcsname}%
  1733.      \def\reserved@a{#6}%
  1734.      \global
  1735.      \expandafter\let\csname#5\expandafter\endcsname
  1736.         \ifx\reserved@a\@empty
  1737.           \@empty
  1738.         \else
  1739.           \reserved@a
  1740.         \fi
  1741.    \fi
  1742. \def\DeclareFixedFont#1#2#3#4#5#6{%
  1743.    \begingroup
  1744.       \math@fontsfalse
  1745.       \every@math@size{}%
  1746.       \fontsize{#6}\z@
  1747.       \usefont{#2}{#3}{#4}{#5}%
  1748.       \global\expandafter\let\expandafter#1\the\font
  1749.    \endgroup
  1750. \def\do@subst@correction{%
  1751.        \xdef\subst@correction{%
  1752.           \font@name
  1753.           \global\expandafter\font
  1754.             \csname \curr@fontshape/\f@size\endcsname
  1755.             \noexpand\fontname\font
  1756.            \relax}%
  1757.        \aftergroup\subst@correction
  1758. \def\DeclareFontFamily#1#2#3{%
  1759.  \@ifundefined{T@#1}%
  1760.     {%
  1761.      \@latex@error{Encoding scheme  `#1' unknown}\@eha
  1762.     }%
  1763.     {%
  1764.      \def\reserved@a{#3}%
  1765.      \global
  1766.      \expandafter\let\csname #1+#2\expandafter\endcsname
  1767.             \ifx \reserved@a\@empty
  1768.               \@empty
  1769.             \else \reserved@a
  1770.             \fi
  1771.     }%
  1772. \let\cdp@list\@empty
  1773. \@onlypreamble\cdp@list
  1774. \let\cdp@elt\relax
  1775. \@onlypreamble\cdp@elt
  1776. \def\DeclareFontEncoding{%
  1777.    \begingroup
  1778.    \nfss@catcodes
  1779.    \expandafter\endgroup
  1780.    \DeclareFontEncoding@}
  1781. \@onlypreamble\DeclareFontEncoding
  1782. \def\DeclareFontEncoding@#1#2#3{%
  1783.   \expandafter
  1784.   \ifx\csname T@#1\endcsname\relax
  1785.      \def\cdp@elt{\noexpand\cdp@elt}%
  1786.      \xdef\cdp@list{\cdp@list\cdp@elt{#1}%
  1787.                     {\default@family}{\default@series}%
  1788.                     {\default@shape}}%
  1789.      \expandafter\let\csname#1-cmd\endcsname\@changed@cmd
  1790.   \else
  1791.      \@font@info{Redeclaring font encoding #1}%
  1792.   \fi
  1793.   \global\@namedef{T@#1}{#2}%
  1794.   \global\@namedef{M@#1}{\default@M#3}%
  1795. \@onlypreamble\DeclareFontEncoding@
  1796. \def\DeclareFontSubstitution#1#2#3#4{%
  1797.   \expandafter
  1798.   \ifx\csname T@#1\endcsname\relax
  1799.     \@latex@error{Encoding scheme  `#1' unknown}\@eha
  1800.   \else
  1801.     \begingroup
  1802.        \def\reserved@a{#1}%
  1803.        \toks@{}%
  1804.        \def\cdp@elt##1##2##3##4{%
  1805.           \def\reserved@b{##1}%
  1806.           \ifx\reserved@a\reserved@b
  1807.              \addto@hook\toks@{\cdp@elt{#1}{#2}{#3}{#4}}%
  1808.           \else
  1809.              \addto@hook\toks@{\cdp@elt{##1}{##2}{##3}{##4}}%
  1810.           \fi}%
  1811.         \cdp@list
  1812.         \xdef\cdp@list{\the\toks@}%
  1813.     \endgroup
  1814.     \global
  1815.     \@namedef{D@#1}{%
  1816.            \def\default@family{#2}%
  1817.            \def\default@series{#3}%
  1818.            \def\default@shape{#4}%
  1819.            }%
  1820.   \fi
  1821. \@onlypreamble\DeclareFontSubstitution
  1822. \def\DeclareFontEncodingDefaults#1#2{%
  1823.   \ifx\relax#1\else
  1824.     \ifx\default@T\@empty\else
  1825.       \@font@info{Overwriting encoding scheme text defaults}%
  1826.     \fi
  1827.     \gdef\default@T{#1}%
  1828.   \fi
  1829.   \ifx\relax#2\else
  1830.     \ifx\default@M\@empty\else
  1831.       \@font@info{Overwriting encoding scheme math defaults}%
  1832.     \fi
  1833.     \gdef\default@M{#2}%
  1834.   \fi
  1835. \@onlypreamble\DeclareFontEncodingDefaults
  1836. \let\default@T\@empty
  1837. \let\default@M\@empty
  1838. \def\DeclarePreloadSizes#1#2#3#4#5{%
  1839.  \@ifundefined{T@#1}%
  1840.    {\@latex@error{Encoding scheme  `#1' unknown}\@eha}%
  1841.    {%
  1842.    \begingroup
  1843.     \def\reserved@f##1,{%
  1844.         \if>##1>%
  1845.           \let\reserved@f\relax
  1846.         \else
  1847.           \xdef\font@name{\csname#1/#2/#3/#4/##1\endcsname}%
  1848.           \pickup@font
  1849.           \global\expandafter\let\font@name\relax
  1850.         \fi
  1851.         \reserved@f}%
  1852.      \reserved@f#5,,%
  1853.    \endgroup
  1854.    }%
  1855. \@onlypreamble\DeclarePreloadSizes
  1856. \newif\ifmath@fonts \math@fontstrue
  1857. \def\DeclareMathSizes{%
  1858.   \@ifstar{\@DeclareMathSizes\math@fontsfalse}%
  1859.           {\@DeclareMathSizes{}}}
  1860. \@onlypreamble\DeclareMathSizes
  1861. \def\@DeclareMathSizes#1#2#3#4#5{%
  1862.     \@defaultunits\dimen@#2pt\relax\@nnil
  1863.     \if$#3$%
  1864.       \expandafter \let
  1865.         \csname S@\strip@pt\dimen@\endcsname
  1866.         \math@fontsfalse
  1867.     \else
  1868.       \expandafter \gdef
  1869.       \csname S@\strip@pt\dimen@\endcsname
  1870.             {\gdef\tf@size{#3}\gdef\sf@size{#4}%
  1871.                              \gdef\ssf@size{#5}%
  1872.              #1%
  1873.                              }%
  1874.     \fi}
  1875. \@onlypreamble\@DeclareMathSizes
  1876. \DeclareRobustCommand\fontencoding[1]{%
  1877.     \expandafter\ifx\csname T@#1\endcsname\relax
  1878.       \@latex@error{Encoding scheme `#1' unknown}\@eha
  1879.     \else
  1880.       \edef\f@encoding{#1}%
  1881.       \ifx\cf@encoding\f@encoding
  1882.         \let\enc@update\relax
  1883.       \else
  1884.         \let\enc@update\@@enc@update
  1885.       \fi
  1886.     \fi
  1887. \def\@@enc@update{%
  1888.           \expandafter
  1889.           \let
  1890.             \csname\cf@encoding -cmd\endcsname
  1891.             \@changed@cmd
  1892.           \expandafter
  1893.           \let
  1894.             \csname\f@encoding-cmd\endcsname
  1895.             \@current@cmd
  1896.         \default@T
  1897.         \csname T@\f@encoding\endcsname
  1898.         \csname D@\f@encoding\endcsname
  1899.         \let\enc@update\relax
  1900.         \let\cf@encoding\f@encoding
  1901. \let\enc@update\relax
  1902. \DeclareRobustCommand\fontfamily[1]{\edef\f@family{#1}}
  1903. \DeclareRobustCommand\fontseries[1]{\edef\f@series{#1}}
  1904. \DeclareRobustCommand\fontshape [1]{\edef\f@shape{#1}}
  1905. \def\usefont#1#2#3#4{\fontencoding{#1}\fontfamily{#2}%
  1906.              \fontseries{#3}\fontshape{#4}\selectfont
  1907.              \ignorespaces}
  1908. \DeclareRobustCommand\linespread[1]
  1909.    {\set@fontsize{#1}\f@size\f@baselineskip}
  1910. \DeclareRobustCommand\fontsize[2]
  1911.    {\set@fontsize\baselinestretch{#1}{#2}}
  1912. \let\f@family\@empty
  1913. \let\f@series\@empty
  1914. \let\f@shape\@empty
  1915. \let\f@size\@empty
  1916. \let\f@baselineskip\@empty
  1917. \let\f@linespread\@empty
  1918. \let\f@encoding\@empty
  1919. \let\cf@encoding\@empty
  1920. \def\@defaultunits{\afterassignment\remove@to@nnil}
  1921. \begingroup
  1922.   \catcode`P=12
  1923.   \catcode`T=12
  1924.   \lowercase{
  1925.     \def\x{\def\rem@pt##1.##2PT{##1\ifnum##2>\z@.##2\fi}}}
  1926.   \expandafter\endgroup\x
  1927. \def\strip@pt{\expandafter\rem@pt\the}
  1928. \DeclareRobustCommand\mathversion[1]
  1929.          {\@nomath\mathversion
  1930.           \expandafter\ifx\csname mv@#1\endcsname\relax
  1931.           \@latex@error{Math version `#1' is not defined}\@eha\else
  1932.           \edef\math@version{#1}%
  1933.           \gdef\glb@currsize{}%
  1934.           \aftergroup\glb@settings
  1935.           \fi}
  1936. \let\frozen@everymath\everymath
  1937. \let\frozen@everydisplay\everydisplay
  1938. \newtoks\everymath
  1939. \newtoks\everydisplay
  1940. \frozen@everymath = {\check@mathfonts
  1941.                      \the\everymath}
  1942. \frozen@everydisplay = {\check@mathfonts
  1943.                         \the\everydisplay}
  1944. \let\curr@math@size\@empty
  1945. \def\pickup@font{%
  1946.     \expandafter \ifx \font@name \relax
  1947.        \define@newfont
  1948.     \fi}
  1949. {\catcode`\/=12
  1950. \gdef\split@name#1/#2/#3/#4/#5\@nil{\def\f@encoding{#1}%
  1951.                                     \def\f@family{#2}%
  1952.                                     \def\f@series{#3}%
  1953.                                     \def\f@shape{#4}%
  1954.                                     \def\f@size{#5}}}
  1955. \def\curr@fontshape{\f@encoding/\f@family/\f@series/\f@shape}
  1956. \def\define@newfont{%
  1957.   \begingroup
  1958.     \let\typeout\@font@info
  1959.     \escapechar\m@ne
  1960.     \expandafter\expandafter\expandafter
  1961.        \split@name\expandafter\string\font@name\@nil
  1962.       \try@load@fontshape % try always
  1963.     \expandafter\ifx
  1964.        \csname\curr@fontshape\endcsname \relax
  1965.       \wrong@fontshape\else
  1966.       \extract@font\fi
  1967.   \endgroup}
  1968. \def\try@load@fontshape{%
  1969.    \expandafter
  1970.    \ifx\csname \f@encoding+\f@family\endcsname\relax
  1971.      \@font@info{Try loading font information for
  1972.                    \f@encoding+\f@family}%
  1973.     \global\expandafter\let
  1974.        \csname\f@encoding+\f@family\endcsname\@empty
  1975.      \makeatletter
  1976.      \nfss@catcodes
  1977.      \let\nfss@catcodes\relax
  1978.      \edef\reserved@a{%
  1979.        \lowercase{%
  1980.          \noexpand\InputIfFileExists{\f@encoding\f@family.fd}}}%
  1981.      \reserved@a\relax
  1982.           {\@input@{\f@encoding\f@family.fd}}%
  1983.    \fi}
  1984. \def\nfss@catcodes{%
  1985.      \catcode`\ 9%
  1986.      \catcode`\^^I9%
  1987.      \catcode`\^^M9%
  1988.      \catcode`\\\z@
  1989.      \catcode`\{\@ne
  1990.      \catcode`\}\tw@
  1991.      \catcode`\#6%
  1992.      \catcode`\^7%
  1993.      \catcode`\%14%
  1994.    \@makeother\<%
  1995.    \@makeother\>%
  1996.    \@makeother\*%
  1997.    \@makeother\.%
  1998.    \@makeother\-%
  1999.    \@makeother\/%
  2000.    \@makeother\[%
  2001.    \@makeother\]%
  2002.    \@makeother\`%
  2003.    \@makeother\'%
  2004.    \@makeother\"%
  2005. \def\DeclareErrorFont#1#2#3#4#5{%
  2006.       \xdef\error@fontshape{%
  2007.           \noexpand\expandafter\noexpand\split@name\noexpand\string
  2008.           \expandafter\noexpand\csname#1/#2/#3/#4/#5\endcsname
  2009.           \noexpand\@nil}%
  2010.       \gdef\default@family{#2}%
  2011.       \gdef\default@series{#3}%
  2012.       \gdef\default@shape{#4}%
  2013.       \global\let\f@family\default@family
  2014.       \global\let\f@series\default@series
  2015.       \global\let\f@shape\default@shape
  2016.       \gdef\f@size{#5}%
  2017.       \gdef\f@baselineskip{#5pt}%
  2018. \@onlypreamble\DeclareErrorFont
  2019. \def\wrong@fontshape{%
  2020.     \csname D@\f@encoding\endcsname      % install defaults if in math
  2021.     \edef\reserved@a{\csname\curr@fontshape\endcsname}%
  2022.   \ifx\last@fontshape\reserved@a
  2023.      \errmessage{Corrupted NFSS tables}%
  2024.      \error@fontshape
  2025.   \else
  2026.     \let\f@shape\default@shape
  2027.     \expandafter\ifx\csname\curr@fontshape\endcsname\relax
  2028.        \let\f@series\default@series
  2029.         \expandafter
  2030.           \ifx\csname\curr@fontshape\endcsname\relax
  2031.            \let\f@family\default@family
  2032.         \fi \fi
  2033.   \fi
  2034.      \@font@warning{Font shape `\expandafter\string\reserved@a'
  2035.                      \expandafter\@gobble\string\@undefined\MessageBreak
  2036.                    using `\curr@fontshape' instead\@wrong@font@char}%
  2037.     \global\let\last@fontshape\reserved@a
  2038.     \gdef\@defaultsubs{%
  2039.       \@font@warning{Some font shapes were not available, defaults
  2040.                       substituted.\@gobbletwo}}%
  2041.     \global\expandafter\expandafter\expandafter\let
  2042.        \expandafter\reserved@a
  2043.            \csname\curr@fontshape\endcsname
  2044.     \xdef\font@name{%
  2045.       \csname\curr@fontshape/\f@size\endcsname}%
  2046.     \pickup@font}
  2047. \let\@wrong@font@char\@empty
  2048. \let\@defaultsubs\relax
  2049. \def\strip@prefix#1>{}
  2050. \let\install@mathalphabet\gdef
  2051. \let\math@fonts\@empty
  2052. \def\extract@alph@from@version#1#2#3{%
  2053.      \def\reserved@a##1\install@mathalphabet#3##2##3\@nil{%
  2054.          \def\reserved@b{##2}%
  2055.          \def\reserved@c####1{\gdef#1{##1####1##3}}}%
  2056.      \expandafter\reserved@a#1\@nil
  2057.      \def\reserved@a\select@group#3##1##2\@nil{%
  2058.         \reserved@c{%
  2059.            \getanddefine@fonts{#2}##2%
  2060.            \install@mathalphabet#3{%
  2061.               \relax\ifmmode \else \non@alpherr#3\fi
  2062.               \use@mathgroup##1{#2}}}%
  2063.        \gdef#3{\relax\ifmmode \else \non@alpherr#3\fi
  2064.                \use@mathgroup##1{#2}}}%
  2065.      \expandafter\reserved@a\reserved@b\@nil
  2066.      }
  2067. \let\math@bgroup\bgroup
  2068. \def\math@egroup#1{#1\egroup}
  2069. \gdef\calculate@math@sizes{%
  2070.   \@font@info{Calculating\space math\space sizes\space for\space
  2071.               size\space <\f@size>}%
  2072.   \dimen@\f@size \p@
  2073.   \@tempdimb \defaultscriptratio \dimen@
  2074.   \dimen@ \defaultscriptscriptratio \dimen@
  2075.   \expandafter\xdef\csname S@\f@size\endcsname{%
  2076.     \gdef\noexpand\tf@size{\f@size}%
  2077.     \gdef\noexpand\sf@size{\strip@pt\@tempdimb}%
  2078.     \gdef\noexpand\ssf@size{\strip@pt\dimen@}%
  2079.     \noexpand\math@fontstrue}}
  2080. \def\defaultscriptratio{.7}
  2081. \def\defaultscriptscriptratio{.5}
  2082. \ifx\noaccents@\@undefined
  2083.   \let\noaccents@\@empty
  2084. \gdef\showhyphens#1{%
  2085.   \setbox0\vbox{%
  2086.     \color@begingroup
  2087.     \parfillskip\z@skip\hsize\maxdimen
  2088.     \normalfont
  2089.     \pretolerance\m@ne\tolerance\m@ne\hbadness\z@\showboxdepth\z@\ #1%
  2090.     \color@endgroup}}
  2091. \long\def\addto@hook#1#2{#1\expandafter{\the#1#2}}
  2092.  \def\@vpt{5}
  2093.  \def\@vipt{6}
  2094.  \def\@viipt{7}
  2095.  \def\@viiipt{8}
  2096.  \def\@ixpt{9}
  2097.  \def\@xpt{10}
  2098.  \def\@xipt{10.95}
  2099.  \def\@xiipt{12}
  2100.  \def\@xivpt{14.4}
  2101.  \def\@xviipt{17.28}
  2102.  \def\@xxpt{20.74}
  2103.  \def\@xxvpt{24.88}
  2104. %%% From File: ltfsstrc.dtx
  2105. %% Copyright (C) 1989-96 by Frank Mittelbach and Rainer Sch\"opf.
  2106. %% Copyright (C) 1994-96 by LaTeX3 project. All rights reserved.
  2107. \def\tracingfonts{%
  2108.   \@font@warning{Command \noexpand\tracingfonts
  2109.            not provided.\MessageBreak
  2110.            Use the `tracefnt' package.\MessageBreak Command found:}%
  2111.        \count@}
  2112. \def\@font@info#1{%
  2113.          \GenericInfo{(Font)\@spaces\@spaces\@spaces\space\space}%
  2114.                      {LaTeX Font Info: \space\space\space#1}}%
  2115. \def\@font@warning#1{%
  2116.          \GenericWarning{(Font)\@spaces\@spaces\@spaces\space\space}%
  2117.                         {LaTeX Font Warning: #1}}%
  2118. \def\extract@font{%
  2119.    \get@external@font
  2120.    \global\expandafter\font\font@name\external@font\relax
  2121.     \font@name \relax
  2122.     \csname \f@encoding+\f@family\endcsname
  2123.     \csname\curr@fontshape\endcsname
  2124.     \relax
  2125.        }
  2126. \def\get@external@font{%
  2127.    \let\external@font\@empty
  2128.    \edef\font@info{\expandafter\expandafter\expandafter\string
  2129.         \csname \curr@fontshape \endcsname}%
  2130.    \try@size@range
  2131.    \ifx\external@font\@empty
  2132.       \try@size@substitution
  2133.       \ifx\external@font\@empty
  2134.          \@latex@error{Font \expandafter \string\font@name\space
  2135.                      not found}\@eha
  2136.          \error@fontshape
  2137.          \get@external@font
  2138.    \fi\fi
  2139. \DeclareRobustCommand\selectfont
  2140.         {%
  2141.     \ifx\f@linespread\baselinestretch \else
  2142.       \set@fontsize\baselinestretch\f@size\f@baselineskip \fi
  2143.     \xdef\font@name{%
  2144.       \csname\curr@fontshape/\f@size\endcsname}%
  2145.     \pickup@font
  2146.     \font@name
  2147.     \size@update
  2148.     \enc@update
  2149.     }
  2150. \def\set@fontsize#1#2#3{%
  2151.     \@defaultunits\@tempdimb#2pt\relax\@nnil
  2152.     \edef\f@size{\strip@pt\@tempdimb}%
  2153.     \@defaultunits\@tempskipa#3pt\relax\@nnil
  2154.     \edef\f@baselineskip{\the\@tempskipa}%
  2155.     \edef\f@linespread{#1}%
  2156.     \let\baselinestretch\f@linespread
  2157.       \def\size@update{%
  2158.         \baselineskip\f@baselineskip\relax
  2159.         \baselineskip\f@linespread\baselineskip
  2160.         \normalbaselineskip\baselineskip
  2161.         \setbox\strutbox\hbox{%
  2162.           \vrule\@height.7\baselineskip
  2163.                 \@depth.3\baselineskip
  2164.                 \@width\z@}%
  2165.         \let\size@update\relax}%
  2166. \let\size@update\relax
  2167. \def\glb@settings{%
  2168.      \expandafter\ifx\csname S@\f@size\endcsname\relax
  2169.        \calculate@math@sizes
  2170.      \fi
  2171.      \csname S@\f@size\endcsname
  2172.      \ifmath@fonts
  2173.        \begingroup
  2174.          \escapechar\m@ne
  2175.          \csname mv@\math@version \endcsname
  2176.          \globaldefs\@ne
  2177.          \math@fonts
  2178.          \let \glb@currsize \f@size
  2179.        \endgroup
  2180.         \the\every@math@size
  2181.      \fi
  2182. \def\baselinestretch{1}
  2183. \newtoks\every@math@size
  2184. \every@math@size={}
  2185. \def\check@mathfonts{%
  2186.   \ifx \glb@currsize \f@size
  2187.   \else
  2188.      \glb@settings
  2189.      \init@restore@glb@settings
  2190.   \fi
  2191.   \let\curr@math@size\f@size
  2192.   \def\init@restore@glb@settings{\aftergroup\restglb@settings}%
  2193. \let\init@restore@glb@settings\relax
  2194. \def\restglb@settings{%
  2195.       \begingroup
  2196.         \let\f@size\curr@math@size
  2197.         \ifx\glb@currsize \f@size
  2198.         \else
  2199.           \glb@settings
  2200.         \fi
  2201.       \endgroup
  2202. \def\use@mathgroup#1#2{\relax\ifmmode
  2203.      \math@bgroup
  2204.          \expandafter\ifx\csname M@\f@encoding\endcsname#1\else
  2205.          #1\fi
  2206.          \mathgroup#2\relax
  2207.      \expandafter\math@egroup\fi}%
  2208. \def\getanddefine@fonts#1#2{%
  2209.   \xdef\font@name{\csname \string#2/\tf@size\endcsname}%
  2210.   \pickup@font \let\textfont@name\font@name
  2211.   \xdef\font@name{\csname \string#2/\sf@size\endcsname}%
  2212.   \pickup@font \let\scriptfont@name\font@name
  2213.   \xdef\font@name{\csname \string#2/\ssf@size\endcsname}%
  2214.   \pickup@font
  2215.   \edef\math@fonts{\math@fonts
  2216.                \textfont#1\textfont@name
  2217.                \scriptfont#1\scriptfont@name
  2218.                \scriptscriptfont#1\font@name}%
  2219.     }
  2220. \def\ifnot@nil#1{\def\reserved@a{#1}%
  2221.   \ifx\reserved@a\@nnil \expandafter\@gobble
  2222.   \else \expandafter\@firstofone\fi}
  2223. \def\remove@to@nnil#1\@nnil{}
  2224. \def\remove@angles#1>{\set@simple@size@args}
  2225. \def\remove@star#1*{#1}
  2226. \def\extract@sizefn#1*#2\@nil{%
  2227.   \if>#2>\set@size@funct@args#1\@nil
  2228.          \let\sizefn@info\@empty
  2229.   \else\expandafter\set@size@funct@args\remove@star#2\@nil
  2230.        \def\sizefn@info{#1}\fi
  2231. \def\try@simple@size{%
  2232.     \def\reserved@a{\def\extract@fontinfo####1}%
  2233.     \expandafter\reserved@a\expandafter<\f@size>##2<##3\@nnil{%
  2234.           \ifnot@nil{##2}%
  2235.             {\set@simple@size@args##2<##3\@nnil
  2236.              \execute@size@function\sizefn@info
  2237.             }}%
  2238.     \expandafter\expandafter
  2239.     \expandafter\extract@fontinfo\expandafter\font@info
  2240.     \expandafter<\f@size>\@nil<\@nnil
  2241. \def\set@simple@size@args#1<{%
  2242.           \if<#1<%
  2243.             \expandafter\remove@angles
  2244.           \else
  2245.             \extract@sizefn#1*\@nil
  2246.             \expandafter\remove@to@nnil
  2247.           \fi}
  2248. \def\extract@rangefontinfo#1<#2>{%
  2249.        \is@range#2->\@nil#2>}
  2250. \def\is@range#1-#2\@nil{%
  2251.    \if>#2\expandafter\check@single\else
  2252.       \expandafter\check@range\fi}
  2253. \def\check@range#1-#2>#3<#4\@nnil{%
  2254.   \ifnot@nil{#3}{%
  2255.      \def\reserved@f{\extract@rangefontinfo<#4\@nnil}%
  2256.      \upper@bound0#2\p@
  2257.      \ifdim\upper@bound=\z@ \upper@bound\maxdimen\fi
  2258.      \ifdim \f@size \p@<\upper@bound
  2259.        \lower@bound0#1\p@
  2260.        \ifdim \f@size \p@<\lower@bound
  2261.         \else
  2262.           \set@simple@size@args#3<#4\@nnil
  2263.           \execute@size@function\sizefn@info
  2264.          \ifx\external@font\@empty
  2265.          \else
  2266.            \let\reserved@f\@empty
  2267.          \fi
  2268.        \fi
  2269.      \fi
  2270.      \reserved@f}}
  2271. \newdimen\lower@bound
  2272. \newdimen\upper@bound
  2273. \def\check@single#1>#2<#3\@nnil{%
  2274.      \def\reserved@f{\extract@rangefontinfo<#3\@nnil}%
  2275.      \ifdim \f@size \p@=#1\p@
  2276.         \set@simple@size@args#2<#3\@nnil
  2277.         \execute@size@function\sizefn@info
  2278.         \ifx\external@font\@empty
  2279.         \else
  2280.           \let\reserved@f\@empty
  2281.         \fi
  2282.      \fi
  2283.      \reserved@f}
  2284. \def\set@size@funct@args{\@ifnextchar[%
  2285.   \set@size@funct@args@{\set@size@funct@args@[]}}
  2286. \def\set@size@funct@args@[#1]#2\@nil{%
  2287.   \def\mandatory@arg{#2}%
  2288.   \def\optional@arg{#1}}
  2289. \def\DeclareSizeFunction#1#2{\@namedef{s@fct@#1}{#2}}
  2290. \@onlypreamble\DeclareSizeFunction
  2291. \def\execute@size@function#1{%    %%% could be added to autoload as well
  2292.       \csname s@fct@#1\endcsname
  2293. \def\try@size@range{%
  2294.     \expandafter\extract@rangefontinfo\font@info <-*>\@nil<\@nnil
  2295. \gdef\try@size@substitution{%
  2296.   \@tempdimb \maxdimen
  2297.   \let \best@size \@empty
  2298.   \expandafter \try@simples \font@info <\number\@M>\@nil<\@nnil
  2299. \def\font@submax{0pt}
  2300. \def\fontsubfuzz{.4pt}
  2301. \gdef\try@simples#1<#2>{%
  2302.   \tryif@simple#2->\tryif@simple}
  2303. \gdef\tryif@simple#1-#2\tryif@simple{%
  2304.   \let \reserved@f \try@simples
  2305.   \if>#2%
  2306.     \dimen@ #1\p@
  2307.     \ifdim \dimen@<\@M\p@
  2308.       \ifdim \f@size\p@<\dimen@
  2309.         \@tempdimc \dimen@
  2310.         \advance\@tempdimc -\f@size\p@
  2311.       \else
  2312.         \@tempdimc \f@size\p@
  2313.         \advance\@tempdimc -\dimen@
  2314.       \fi
  2315.       \ifdim \@tempdimc<\@tempdimb
  2316.         \@tempdimb \@tempdimc
  2317.         \def \best@size{#1}%
  2318.       \fi
  2319.     \else
  2320.   \ifx \external@font\@empty
  2321.     \ifx \best@size\@empty
  2322.     \else
  2323.       \ifdim \@tempdimb>\font@submax \relax
  2324.         \xdef \font@submax {\the\@tempdimb}%
  2325.       \fi
  2326.       \let \f@user@size \f@size
  2327.       \let \f@size \best@size
  2328.       \ifdim \@tempdimb>\fontsubfuzz\relax
  2329.         \@font@warning{Font\space shape\space
  2330.             `\curr@fontshape'\space in\space size\space
  2331.              <\f@user@size>\space not\space available\MessageBreak
  2332.              size\space <\f@size>\space substituted}%
  2333.       \fi
  2334.       \try@simple@size
  2335.       \do@subst@correction
  2336.     \fi
  2337.       \let \reserved@f \remove@to@nnil
  2338.     \fi
  2339.   \fi
  2340.   \reserved@f}
  2341. \DeclareSizeFunction{}{\empty@sfcnt\@font@warning}
  2342. \DeclareSizeFunction{s}{\empty@sfcnt\@font@info}
  2343. \def\empty@sfcnt#1{%
  2344.       \@tempdimb \f@size\p@
  2345.       \ifx\optional@arg\@empty
  2346.       \else
  2347.         \@tempdimb \optional@arg\@tempdimb
  2348.         #1{Font\space shape\space `\curr@fontshape'\space
  2349.            will\space be\MessageBreak
  2350.            scaled\space to\space size\space \the\@tempdimb}%
  2351.       \fi
  2352.       \edef\external@font{\mandatory@arg\space at\the\@tempdimb}}
  2353. \DeclareSizeFunction{gen}{\gen@sfcnt\@font@warning}
  2354. \DeclareSizeFunction{sgen}{\gen@sfcnt\@font@info}
  2355. \def\gen@sfcnt{%
  2356.       \edef\mandatory@arg{\mandatory@arg\f@size}%
  2357.       \empty@sfcnt}
  2358. \DeclareSizeFunction{genb}{\genb@sfcnt\@font@warning}
  2359. \DeclareSizeFunction{sgenb}{\genb@sfcnt\@font@info}
  2360. \def\genb@sfcnt{%
  2361.     \edef\mandatory@arg{\mandatory@arg\expandafter\genb@x\f@size..\@@}%
  2362.     \empty@sfcnt}
  2363. \def\genb@x#1.#2.#3\@@{\two@digits{#1}\genb@y#200\@@}
  2364. \def\genb@y#1#2#3\@@{#1#2}
  2365. \DeclareSizeFunction{sub}{\sub@sfcnt\@font@warning}
  2366. \DeclareSizeFunction{ssub}{\sub@sfcnt\@font@info}
  2367. \def\sub@sfcnt#1{%
  2368.     \edef\mandatory@arg{\f@encoding/\mandatory@arg}%
  2369.     \begingroup
  2370.      \expandafter\split@name\mandatory@arg/\@nil
  2371.      \try@load@fontshape
  2372.     \endgroup
  2373.     \let\f@user@size\f@size
  2374.     \expandafter
  2375.     \ifx\csname\mandatory@arg\endcsname\relax
  2376.       \errmessage{No\space declaration\space for\space
  2377.                   shape\space \mandatory@arg}%
  2378.       \error@fontshape
  2379.     \else
  2380.       #1{Font\space shape\space `\curr@fontshape'\space in\space
  2381.          size\space <\f@size>\space not\space available\MessageBreak
  2382.          Font\space shape\space `\mandatory@arg'\space tried\space
  2383.          instead}%
  2384.       \expandafter\split@name\mandatory@arg/\@nil
  2385.     \fi
  2386.     \edef\f@size{\f@user@size}%
  2387.     \get@external@font
  2388.     \do@subst@correction
  2389. \DeclareSizeFunction{subf}{\subf@sfcnt\@font@warning}
  2390. \DeclareSizeFunction{ssubf}{\subf@sfcnt\@font@info}
  2391. \def\subf@sfcnt#1{%
  2392.       #1{Font\space shape\space `\curr@fontshape'\space in\space
  2393.          size\space \f@size\space not\space available\MessageBreak
  2394.         external\space font\space `\mandatory@arg'\space used}%
  2395.       \empty@sfcnt#1%
  2396.       }
  2397. \DeclareSizeFunction{fixed}{\fixed@sfcnt\@font@warning}
  2398. \DeclareSizeFunction{sfixed}{\fixed@sfcnt\@font@info}
  2399. \def\fixed@sfcnt#1{%
  2400.   \ifx\optional@arg\@empty
  2401.     \let\external@font\mandatory@arg
  2402.   \else
  2403.     \edef\external@font{\mandatory@arg\space at\optional@arg pt}%
  2404.   \fi
  2405.   #1{External\space font\space `\external@font'\space loaded\space
  2406.      for\space size\MessageBreak
  2407.      <\f@size>}%
  2408. %%% From File: ltfsscmp.dtx
  2409. %% Copyright (C) 1989-1995 Frank Mittelbach and Rainer Sch\"opf,
  2410. %% all rights reserved.
  2411. \gdef\new@fontshape#1#2#3#4{%
  2412.      \warn@rel@i\new@fontshape\DeclareFontShape
  2413.      \expandafter\scan@fontshape\@gobble#4<\@nil><<%
  2414.      \DeclareFontShape U{#1}{#2}{#3}\reserved@f}
  2415. \@onlypreamble\new@fontshape
  2416. \gdef\warn@rel@i#1#2{%
  2417.  \@font@warning{***  NFSS release 1 command
  2418.                \noexpand#1found\MessageBreak
  2419.    ***  Update by using release 2 command
  2420.         \string#2.\MessageBreak
  2421.    ***  Recovery is probably possible}%
  2422. \@onlypreamble\warn@rel@i
  2423. \gdef\scan@fontshape{%
  2424.   \let\reserved@f\@empty
  2425.   \let\reserved@e\@empty %        holds last info
  2426.   \scan@@fontshape
  2427. \@onlypreamble\scan@fontshape
  2428. \gdef\scan@@fontshape#1>#2#3<{%
  2429.   \ifx\@nil#1%
  2430.     \edef\reserved@f{\reserved@f\reserved@e}%
  2431.   \else
  2432.     \def\reserved@b{#1}%       nick names
  2433.     \def\reserved@c{#3}%
  2434.     \in@{ at}{#3}%
  2435.     \ifin@
  2436.       \in@{pt}{#3}%  not a proof but a good chance
  2437.       \ifin@
  2438.         \def\reserved@a##1 at##2pt##3\@nil{%
  2439.            \def\reserved@b{##2}%
  2440.            \def\reserved@c{##1}%
  2441.            }%
  2442.         \reserved@a#3\@nil
  2443.       \fi
  2444.     \fi
  2445.     \ifnum 0<0#2
  2446.       \edef\reserved@d{subf*\reserved@c}%
  2447.       \ifcase #2\or
  2448.       \or
  2449.       \else
  2450.         \errmessage{*** What's this? NFSS release 0? ***}%
  2451.       \fi
  2452.     \else
  2453.       \edef\reserved@d{#2\reserved@c}%
  2454.     \fi
  2455.     \ifx\reserved@d\reserved@e
  2456.       \edef\reserved@f{\reserved@f<\reserved@b>}%
  2457.     \else
  2458.       \edef\reserved@f{\reserved@f\reserved@e<\reserved@b>}%add old info
  2459.       \let\reserved@e\reserved@d
  2460.     \fi
  2461.     \expandafter\scan@@fontshape
  2462.   \fi
  2463. \@onlypreamble\scan@@fontshape
  2464. \gdef\subst@fontshape#1#2#3#4#5#6{%
  2465.      \warn@rel@i\subst@fontshape\DeclareFontShape
  2466.      \DeclareFontShape{U}{#1}{#2}{#3}{<->sub*#4/#5/#6}{}}
  2467. \@onlypreamble\subst@fontshape
  2468. \gdef\extra@def#1#2#3{%
  2469.      \warn@rel@i\extra@def\DeclareFontFamily
  2470.      \DeclareFontFamily{U}{#1}{}%
  2471. \@onlypreamble\extra@def
  2472. \gdef\default@mextra{%
  2473.   \warn@rel@i\default@mextra\DeclareFontEncodingDefaults
  2474.   \DeclareFontEncodingDefaults\relax
  2475. \@onlypreamble\default@mextra
  2476. \gdef\preload@sizes{%
  2477.      \warn@rel@i\preload@sizes\DeclarePreloadSizes
  2478.      \DeclarePreloadSizes U%
  2479. \@onlypreamble\preload@sizes
  2480. \gdef\err@rel@i#1#2{%
  2481.   \@latex@error{***  NFSS release 1 command \noexpand#1found%
  2482.           ^^J***  Recovery not possible. Use \string#2}%
  2483.        {The new release of NFSS doesn't support the
  2484.         \noexpand#1command^^Jany longer.
  2485.         Please upgrade your file to the syntax of NFSS
  2486.         release 2^^Jusing the \noexpand#2command.}%
  2487.   \batchmode\input.\relax
  2488. \@onlypreamble\err@rel@i
  2489. \gdef\newmathalphabet{%
  2490.   \if@no@font@opt
  2491.     \@latex@error{*** NFSS release 1 command
  2492.                     \noexpand\newmathalphabet found%
  2493.      ^^J \space*** Automatic recovery not possible.%
  2494.      ^^J \space*** TYPE H for Help%
  2495.               }%
  2496.        {Please look at the file usrguide.tex for hints on
  2497.         how to resolve this problem.}%
  2498.   \else
  2499.      \warn@rel@i\newmathalphabet\DeclareMathAlphabet
  2500.   \fi
  2501.   \@ifstar\newmathalphabet@@@
  2502.           \newmathalphabet@@}
  2503. \gdef\newmathalphabet@@#1{\DeclareMathAlphabet#1{U}{}{}{}}
  2504. \gdef\newmathalphabet@@@#1#2#3#4{%
  2505.        \DeclareMathAlphabet{#1}{U}{#2}{#3}{#4}}
  2506. \@onlypreamble\newmathalphabet
  2507. \@onlypreamble\newmathalphabet@@
  2508. \@onlypreamble\newmathalphabet@@@
  2509. \global\let\if@no@font@opt\iftrue
  2510. \gdef\@no@font@optfalse{\let\if@no@font@opt\iffalse}
  2511. \gdef\define@mathalphabet{%
  2512.       \err@rel@i\define@mathalphabet\DeclareMathAlphabet
  2513. \@onlypreamble\define@mathalphabet
  2514. \gdef\define@mathgroup{%
  2515.       \err@rel@i\define@mathgroup\DeclareSymbolFont
  2516. \@onlypreamble\define@mathgroup
  2517. \def\addtoversion#1#2{%
  2518.   \warn@rel@i\addtoversion\SetMathAlphabet
  2519.   \SetMathAlphabet#2{#1}{U}}
  2520. \@onlypreamble\addtoversion
  2521. %%% From File: ltfssdcl.dtx
  2522. %% Copyright (C) 1989-1996 Frank Mittelbach and Rainer Sch\"opf,
  2523. %% all rights reserved.
  2524. \def\in@#1#2{%
  2525.  \def\in@@##1#1##2##3\in@@{%
  2526.   \ifx\in@##2\in@false\else\in@true\fi}%
  2527.  \in@@#2#1\in@\in@@}
  2528. \newif\ifin@
  2529. \let\version@list=\@empty
  2530. \@onlypreamble\version@list
  2531. \let\version@elt\relax
  2532. \@onlypreamble\version@elt
  2533. \let\alpha@list\@empty
  2534. \@onlypreamble\alpha@list
  2535. \let\alpha@elt\relax
  2536. \@onlypreamble\alpha@elt
  2537. \count18=-1
  2538. \def\stepcounter #1{\global\advance\csname c@#1\endcsname\@ne
  2539.   \begingroup\let\@elt\@stpelt \csname cl@#1\endcsname\endgroup }
  2540. \def\select@group#1#2#3#4{%
  2541.  \ifx\math@bgroup\bgroup\else\relax\expandafter\@firstofone\fi
  2542.  \ifmmode
  2543.   \ifnum\csname c@mv@\math@version\endcsname<\sixt@@n
  2544.      \begingroup
  2545.        \escapechar\m@ne
  2546.        \getanddefine@fonts{\csname c@mv@\math@version\endcsname}#3%
  2547.        \globaldefs\@ne  \math@fonts
  2548.      \endgroup
  2549.      \init@restore@version
  2550.      \xdef#1{\noexpand\use@mathgroup\noexpand#2%
  2551.              {\number\csname c@mv@\math@version\endcsname}}%
  2552.      \stepcounter{mv@\math@version}%
  2553.    \else
  2554.      \let#1\relax
  2555.      \@latex@error{Too many math alphabets used in
  2556.                    version \math@version}%
  2557.         \@eha
  2558.    \fi
  2559.  \else \expandafter\non@alpherr\fi
  2560.  #1{#4}%
  2561. \@onlypreamble\restore@mathversion
  2562. \def\init@restore@version{%
  2563.         \global\let\init@restore@version\relax
  2564.         \xdef\restore@mathversion
  2565.              {\expandafter\noexpand\csname mv@\math@version\endcsname
  2566.               \global\csname c@mv@\math@version\endcsname
  2567.               \number\csname c@mv@\math@version\endcsname\relax}%
  2568.         \aftergroup\dorestore@version
  2569. \@onlypreamble\init@restore@version
  2570. \gdef\non@alpherr#1{\@latex@error{%
  2571.     \expandafter\@firstoftwo\string#1 allowed only in math mode}\@ehd}
  2572. \def\dorestore@version
  2573.  {\ifmmode
  2574.     \aftergroup\dorestore@version
  2575.   \else
  2576.     \gdef\init@restore@version{%
  2577.         \global\let\init@restore@version\relax
  2578.         \xdef\restore@mathversion
  2579.              {\expandafter\noexpand\csname mv@\math@version\endcsname
  2580.               \global\csname c@mv@\math@version\endcsname
  2581.               \number\csname c@mv@\math@version\endcsname\relax}%
  2582.         \aftergroup\dorestore@version
  2583.     }%
  2584.     \begingroup
  2585.       \let\getanddefine@fonts\@gobbletwo
  2586.       \restore@mathversion
  2587.     \endgroup
  2588.   \fi}%
  2589. \@onlypreamble\dorestore@version
  2590. \def\document@select@group#1#2#3#4{%
  2591.  \ifx\math@bgroup\bgroup\else\relax\expandafter\@firstofone\fi
  2592.  \ifmmode
  2593.    \ifnum\csname c@mv@\math@version\endcsname<\sixt@@n
  2594.      \begingroup
  2595.        \escapechar\m@ne
  2596.        \getanddefine@fonts{\csname c@mv@\math@version\endcsname}#3%
  2597.        \globaldefs\@ne  \math@fonts
  2598.      \endgroup
  2599.      \expandafter\extract@alph@from@version
  2600.          \csname mv@\math@version\expandafter\endcsname
  2601.          \expandafter{\number\csname
  2602.                        c@mv@\math@version\endcsname}%
  2603.           #1%
  2604.      \stepcounter{mv@\math@version}%
  2605.    \else
  2606.      \let#1\relax
  2607.      \@latex@error{Too many math alphabets used
  2608.                    in version \math@version}%
  2609.         \@eha
  2610.   \fi
  2611.  \else \expandafter\non@alpherr\fi
  2612.  #1{#4}%
  2613. \def\process@table{%
  2614.     \def\cdp@elt##1##2##3##4{%
  2615.         \@font@info{Checking defaults for
  2616.                   ##1/##2/##3/##4}%
  2617.         \expandafter
  2618.         \ifx\csname##1/##2/##3/##4\endcsname\relax
  2619.           \begingroup
  2620.            \def\f@encoding{##1}\def\f@family{##2}%
  2621.            \try@load@fontshape
  2622.           \endgroup
  2623.         \fi
  2624.         \expandafter
  2625.         \ifx\csname##1/##2/##3/##4\endcsname\relax
  2626.              \@latex@error{This NFSS system isn't set up properly}%
  2627.                        {For encoding scheme ##1 the defaults
  2628.                         ##2/##3/##4 do not form a valid font shape}%
  2629.         \else
  2630.              \@font@info{... okay}%
  2631.         \fi}%
  2632.     \cdp@list
  2633.     \begingroup
  2634.        \escapechar\m@ne
  2635.        \error@fontshape
  2636.        \expandafter\ifx\csname \curr@fontshape\endcsname\relax
  2637.           \begingroup
  2638.             \try@load@fontshape
  2639.            \endgroup
  2640.        \fi
  2641.        \expandafter\ifx\csname \curr@fontshape\endcsname\relax
  2642.          \@latex@error{This NFSS system isn't set up properly}%
  2643.             {The system maintainer forgot to specify a suitable
  2644.              substitution
  2645.              font shape using the \noexpand\DeclareErrorFont
  2646.              command}%
  2647.        \fi
  2648.     \endgroup
  2649.     \let\select@group\document@select@group
  2650.     \fontencoding{\encodingdefault}%
  2651.     \fontfamily{\familydefault}%
  2652.     \fontseries{\seriesdefault}%
  2653.     \fontshape{\shapedefault}%
  2654.  \everyjob{}%
  2655. \@onlypreamble\process@table
  2656. \def\DeclareMathVersion#1{%
  2657.   \expandafter\new@mathversion\csname mv@#1\endcsname}
  2658. \@onlypreamble\DeclareMathVersion
  2659. \def\new@mathversion#1{%
  2660.   \expandafter\in@\expandafter#1\expandafter{\version@list}%
  2661.   \ifin@
  2662.     \@font@info{Redeclaring math version
  2663.                `\expandafter\@gobblefour\string#1'}%
  2664.   \else
  2665.     \global\expandafter\newcount\csname c@\expandafter
  2666.                                 \@gobble\string#1\endcsname
  2667.     \def\version@elt{\noexpand\version@elt\noexpand}%
  2668.     \edef\version@list{\version@list\version@elt#1}%
  2669.   \fi
  2670.   \toks@{}%
  2671.   \count@\z@
  2672.   \def\group@elt##1##2{%
  2673.        \advance\count@\@ne
  2674.        \addto@hook\toks@{\getanddefine@fonts##1##2}%
  2675.        }%
  2676.   \group@list
  2677.   \global\csname c@\expandafter\@gobble\string#1\endcsname\count@
  2678.   \def\alpha@elt##1##2##3{%
  2679.        \ifx##2\no@alphabet@error
  2680.          \toks@\expandafter{\the\toks@\install@mathalphabet##1%
  2681.              {\no@alphabet@error##1}}%
  2682.        \else
  2683.          \toks@\expandafter{\the\toks@\install@mathalphabet##1%
  2684.              {\select@group##1##2##3}}%
  2685.        \fi
  2686.           }%
  2687.   \alpha@list
  2688.   \xdef#1{\the\toks@}%
  2689. \@onlypreamble\new@mathversion
  2690. \def\DeclareSymbolFont#1#2#3#4#5{%
  2691.  \@tempswafalse
  2692.  \edef\reserved@b{#2}%
  2693.  \def\cdp@elt##1##2##3##4{\def\reserved@c{##1}%
  2694.       \ifx\reserved@b\reserved@c \@tempswatrue\fi}%
  2695.  \cdp@list
  2696.  \if@tempswa
  2697.    \@ifundefined{sym#1}{%
  2698.       \expandafter\new@mathgroup\csname sym#1\endcsname
  2699.       \expandafter\new@symbolfont\csname sym#1\endcsname
  2700.                         {#2}{#3}{#4}{#5}}%
  2701.      {%
  2702.       \@font@info{Redeclaring symbol font `#1'}%
  2703.       \def\group@elt##1##2{%
  2704.           \expandafter\ifx\csname sym#1\endcsname##1%
  2705.                \expandafter\addto@hook\expandafter
  2706.                   \toks@\expandafter{\expandafter\group@elt
  2707.                   \expandafter##1\csname#2/#3/#4/#5\endcsname}%
  2708.              \else
  2709.                \addto@hook\toks@{\group@elt##1##2}%
  2710.              \fi
  2711.           }%
  2712.       \toks@{}%
  2713.       \group@list
  2714.       \def\version@elt##1{%
  2715.           \expandafter
  2716.           \SetSymbolFont@\expandafter##1\csname#2/#3/#4/#5\expandafter
  2717.               \endcsname \csname sym#1\endcsname
  2718.           }%
  2719.       \version@list
  2720.      }%
  2721.   \else
  2722.     \@latex@error{Encoding scheme  `#2' unknown}\@eha
  2723.   \fi
  2724. \@onlypreamble\DeclareSymbolFont
  2725. \let\group@list\@empty
  2726. \@onlypreamble\group@list
  2727. \let\group@elt\relax
  2728. \@onlypreamble\group@elt
  2729. \def\new@symbolfont#1#2#3#4#5{%
  2730.     \toks@\expandafter{\group@list}%
  2731.     \edef\group@list{\the\toks@\noexpand\group@elt\noexpand#1%
  2732.                      \expandafter\noexpand\csname#2/#3/#4/#5\endcsname}%
  2733.     \def\version@elt##1{\toks@\expandafter{##1}%
  2734.                    \edef##1{\the\toks@\noexpand\getanddefine@fonts
  2735.                    #1\expandafter\noexpand\csname#2/#3/#4/#5\endcsname}%
  2736.                   \global\advance\csname c@\expandafter
  2737.                                  \@gobble\string##1\endcsname\@ne
  2738.                  }%
  2739.     \version@list
  2740. \@onlypreamble\new@symbolfont
  2741. \def\SetSymbolFont#1#2#3#4#5#6{%
  2742.  \@tempswafalse
  2743.  \edef\reserved@b{#3}%
  2744.  \def\cdp@elt##1##2##3##4{\def\reserved@c{##1}%
  2745.       \ifx\reserved@b\reserved@c \@tempswatrue\fi}%
  2746.  \cdp@list
  2747.  \if@tempswa
  2748.   \expandafter\SetSymbolFont@
  2749.     \csname mv@#2\expandafter\endcsname\csname#3/#4/#5/#6\expandafter
  2750.     \endcsname \csname sym#1\endcsname
  2751.  \else
  2752.   \@latex@error{Encoding scheme  `#3' unknown}\@eha
  2753. \@onlypreamble\SetSymbolFont
  2754. \def\SetSymbolFont@#1#2#3{%
  2755.   \expandafter\in@\expandafter#1\expandafter{\version@list}%
  2756.   \ifin@
  2757.     \expandafter\in@\expandafter#3\expandafter{\group@list}%
  2758.     \ifin@
  2759.       \begingroup
  2760.         \expandafter\get@cdp\string#2\@nil\reserved@a
  2761.         \toks@{}%
  2762.         \def\install@mathalphabet##1##2{%
  2763.              \addto@hook\toks@{\install@mathalphabet##1{##2}}%
  2764.             }%
  2765.         \def\getanddefine@fonts##1##2{%
  2766.           \ifnum##1=#3%
  2767.              \addto@hook\toks@{\getanddefine@fonts#3#2}%
  2768.              \expandafter\get@cdp\string##2\@nil\reserved@b
  2769.              \ifx\reserved@a\reserved@b\else
  2770.                 \@font@warning{Encoding `\reserved@b' has changed
  2771.                     to `\reserved@a' for symbol font\MessageBreak
  2772.                    `\expandafter\@gobblefour\string#3' in the
  2773.                     math version `\expandafter
  2774.                     \@gobblefour\string#1'}%
  2775.              \fi
  2776.              \@font@info{%
  2777.                 Overwriting symbol font
  2778.                 `\expandafter\@gobblefour\string#3' in
  2779.                  version `\expandafter
  2780.                 \@gobblefour\string#1'\MessageBreak
  2781.                 \@spaces \expandafter\@gobble\string##2 -->
  2782.                          \expandafter\@gobble\string#2}%
  2783.           \else
  2784.              \addto@hook\toks@{\getanddefine@fonts##1##2}%
  2785.           \fi}%
  2786.          #1%
  2787.          \xdef#1{\the\toks@}%
  2788.       \endgroup
  2789.     \else
  2790.        \@latex@error{Symbol font `\expandafter\@gobblefour\string#3'
  2791.                   not defined}\@eha
  2792.     \fi
  2793.   \else
  2794.     \@latex@error{Math version `\expandafter\@gobblefour\string#1'
  2795.        is not
  2796.        defined}{You probably mispelled the name of the math
  2797.        version.^^JOr you have to specify an additional package.}%
  2798.   \fi
  2799. \@onlypreamble\SetSymbolFont@
  2800. \def\get@cdp#1#2/#3\@nil#4{\def#4{#2}}
  2801. \@onlypreamble\get@cdp
  2802. \def\DeclareMathAlphabet#1#2#3#4#5{%
  2803.  \@tempswafalse
  2804.  \edef\reserved@b{#2}%
  2805.  \def\cdp@elt##1##2##3##4{\def\reserved@c{##1}%
  2806.       \ifx\reserved@b\reserved@c \@tempswatrue\fi}%
  2807.  \cdp@list
  2808.  \if@tempswa
  2809.    \expandafter\ifx
  2810.    \csname\expandafter\@gobble\string#1\endcsname
  2811.    \relax
  2812.       \new@mathalphabet#1{#2}{#3}{#4}{#5}%
  2813.    \else
  2814.      \edef\reserved@a{\noexpand\in@{\string\select@group}%
  2815.          {\expandafter\meaning\csname @\expandafter
  2816.           \@gobble\string#1\endcsname}}%
  2817.      \reserved@a
  2818.      \ifin@
  2819.        \@font@info{Redeclaring math alphabet \string#1}%
  2820.        \def\version@elt##1{%
  2821.          \expandafter\SetMathAlphabet@\expandafter
  2822.             ##1\csname#2/#3/#4/#5\expandafter\endcsname
  2823.             \csname M@#2\expandafter\endcsname
  2824.             \csname @\expandafter\@gobble\string#1\endcsname#1}%
  2825.        \version@list
  2826.      \else
  2827.        \edef\reserved@a{\noexpand\in@{\string\use@mathgroup}%
  2828.          {\expandafter\meaning\csname @\expandafter
  2829.           \@gobble\string#1\endcsname}}%
  2830.        \reserved@a
  2831.        \ifin@
  2832.          \@font@info{Redeclaring math alphabet \string#1}%
  2833.          \new@mathalphabet#1{#2}{#3}{#4}{#5}%
  2834.        \else
  2835.          \@latex@error{Command `\string#1' already defined}\@eha
  2836.        \fi
  2837.      \fi
  2838.   \fi
  2839.  \else
  2840.   \@latex@error{Encoding scheme  `#2' unknown}\@eha
  2841. \@onlypreamble\DeclareMathAlphabet
  2842. \def\new@mathalphabet#1#2#3#4#5{%
  2843.     \toks@\expandafter{\alpha@list}%
  2844.     \edef#1{\expandafter\noexpand\csname @\expandafter
  2845.             \@gobble\string#1\endcsname
  2846.             \if/#5/%
  2847.                \noexpand\no@alphabet@error
  2848.                \noexpand\no@alphabet@error
  2849.             \else
  2850.                \expandafter\noexpand\csname M@#2\endcsname
  2851.                \expandafter\noexpand\csname#2/#3/#4/#5\endcsname
  2852.             \fi
  2853.            }%
  2854.     \toks2\expandafter{#1}%
  2855.     \edef\alpha@list{\the\toks@\noexpand\alpha@elt\the\toks2}%
  2856.     \def\version@elt##1{\toks@\expandafter{##1}%
  2857.                    \edef##1{\the\toks@\install@mathalphabet
  2858.                             \expandafter\noexpand
  2859.                             \csname @\expandafter\@gobble
  2860.                                \string#1\endcsname
  2861.                            {\if/#5/%
  2862.                              \noexpand\no@alphabet@error
  2863.                              \noexpand#1%
  2864.                             \else
  2865.                              \noexpand\select@group\the\toks2
  2866.                             \fi}}%
  2867.                  }%
  2868.     \version@list
  2869.     \expandafter\edef\csname @\expandafter\@gobble
  2870.                 \string#1\endcsname{\if/#5/%
  2871.               \noexpand\no@alphabet@error
  2872.               \noexpand#1%
  2873.             \else
  2874.               \noexpand\select@group\the\toks2
  2875.             \fi}%
  2876.     \edef#1{\noexpand\protect
  2877.             \expandafter\noexpand\csname @\expandafter
  2878.             \@gobble\string#1\endcsname}%
  2879. \@onlypreamble\new@mathalphabet
  2880. \def\SetMathAlphabet#1#2#3#4#5#6{%
  2881.  \@tempswafalse
  2882.  \edef\reserved@b{#3}%
  2883.  \def\cdp@elt##1##2##3##4{\def\reserved@c{##1}%
  2884.       \ifx\reserved@b\reserved@c \@tempswatrue\fi}%
  2885.  \cdp@list
  2886.  \if@tempswa
  2887.   \expandafter\SetMathAlphabet@
  2888.     \csname mv@#2\expandafter\endcsname\csname#3/#4/#5/#6\expandafter
  2889.     \endcsname \csname M@#3\expandafter\endcsname
  2890.     \csname @\expandafter\@gobble\string#1\endcsname#1%
  2891.  \else
  2892.   \@latex@error{Encoding scheme  `#3' unknown}\@eha
  2893. \@onlypreamble\SetMathAlphabet
  2894. \def\SetMathAlphabet@#1#2#3#4#5{%
  2895.   \expandafter\in@\expandafter#1\expandafter{\version@list}%
  2896.   \ifin@
  2897.     \expandafter\in@\expandafter#4\expandafter{\alpha@list}%
  2898.     \ifin@
  2899.       \begingroup
  2900.         \toks@{}%
  2901.         \def\getanddefine@fonts##1##2{%
  2902.              \addto@hook\toks@{\getanddefine@fonts##1##2}%
  2903.             }%
  2904.         \def\reserved@c##1##2##3##4{%                % for message below
  2905.             \expandafter\@gobble\string##4}%
  2906.         \def\install@mathalphabet##1##2{%
  2907.           \ifx##1#4%
  2908.              \addto@hook\toks@
  2909.                 {\install@mathalphabet#4{\select@group#4#3#2}}%
  2910.              \@font@info{Overwriting math alphabet
  2911.                 `\string#5' in version `\expandafter
  2912.                  \@gobblefour\string#1'\MessageBreak
  2913.                  \@spaces \reserved@c##2 -->
  2914.                         \expandafter\@gobble\string#2}%
  2915.           \else
  2916.              \addto@hook\toks@{\install@mathalphabet##1{##2}}%
  2917.           \fi
  2918.           }%
  2919.         #1%
  2920.         \xdef#1{\the\toks@}%
  2921.       \endgroup
  2922.     \else
  2923.        \edef\reserved@a{%
  2924.          \noexpand\in@{\string\use@mathgroup}{\meaning#4}}%
  2925.        \reserved@a
  2926.        \ifin@
  2927.          \def\reserved@b##1\use@mathgroup##2##3{%
  2928.              \def\reserved@b{##3}\def\reserved@c{##2}}%
  2929.          \expandafter\reserved@b#4%
  2930.          \begingroup
  2931.            \def\install@mathalphabet##1##2{%
  2932.                \addto@hook\toks@{\install@mathalphabet##1{##2}}%
  2933.                }%
  2934.             \def\getanddefine@fonts##1##2{%
  2935.               \addto@hook\toks@{\getanddefine@fonts##1##2}%
  2936.               \ifnum##1=\reserved@b
  2937.                  \expandafter
  2938.                  \addto@hook\expandafter\toks@
  2939.                  \expandafter{\expandafter\install@mathalphabet
  2940.                  \expandafter#4\expandafter
  2941.                        {\expandafter\select@group\expandafter
  2942.                          #4\reserved@c##2}}%
  2943.               \fi
  2944.                       }%
  2945.            \def\version@elt##1{%
  2946.                \toks@{}%
  2947.                ##1%
  2948.                \xdef##1{\the\toks@}%
  2949.               }%
  2950.            \version@list
  2951.          \endgroup
  2952.          \expandafter\gdef\expandafter\alpha@list\expandafter
  2953.              {\alpha@list
  2954.               \alpha@elt #4\no@alphabet@error \no@alphabet@error}%
  2955.          \gdef#4{\no@alphabet@error #5}% fake things :-)
  2956.          \SetMathAlphabet@{#1}{#2}{#3}#4#5%
  2957.        \else
  2958.          \@latex@error{Command `\string#5' not defined as a
  2959.                        math alphabet}%
  2960.             {Use \noexpand\DeclareMathAlphabet to define it.}%
  2961.        \fi
  2962.     \fi
  2963.   \else
  2964.     \@latex@error{Math version `\expandafter\@gobblefour\string#1'
  2965.        is not
  2966.        defined}{You probably mispelled the name of the math
  2967.        version.^^JOr you have to specify an additional package.}%
  2968.   \fi
  2969. \@onlypreamble\SetMathAlphabet@
  2970. \def\DeclareMathAccent#1#2#3#4{%
  2971.   \expandafter\in@\csname sym#3\expandafter\endcsname
  2972.      \expandafter{\group@list}%
  2973.   \ifin@
  2974.     \begingroup
  2975.       \count\z@=#4\relax
  2976.       \count\tw@\count\z@
  2977.       \divide\count\z@\sixt@@n
  2978.       \count@\count\z@
  2979.       \multiply\count@\sixt@@n
  2980.       \advance\count\tw@-\count@
  2981.       \if\relax\noexpand#1% is command?
  2982.         \edef\reserved@a{\noexpand\in@{\string\mathaccent}{\meaning#1}}%
  2983.         \reserved@a
  2984.         \ifin@
  2985.           \expandafter\set@mathaccent
  2986.              \csname sym#3\endcsname#1#2%
  2987.              {\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
  2988.           \@font@info{Redeclaring math accent \string#1}%
  2989.         \else
  2990.           \expandafter\ifx
  2991.           \csname\expandafter\@gobble\string#1\endcsname
  2992.           \relax
  2993.             \expandafter\set@mathaccent
  2994.                \csname sym#3\endcsname#1#2%
  2995.                {\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
  2996.           \else
  2997.             \@latex@error{Command `\string#1' already defined}\@eha
  2998.           \fi
  2999.         \fi
  3000.       \else
  3001.        \@latex@error{Not a command name: `\noexpand#1'}\@eha
  3002.       \fi
  3003.     \endgroup
  3004.   \else
  3005.     \@latex@error{Symbol font `#3' is not defined}\@eha
  3006.   \fi
  3007. \@onlypreamble\DeclareMathAccent
  3008. \def\set@mathaccent#1#2#3#4{%
  3009.   \xdef#2{\mathaccent"\mathchar@type#3\hexnumber@#1#4\relax}}
  3010. \@onlypreamble\set@mathaccent
  3011. \def\DeclareMathSymbol#1#2#3#4{%
  3012.   \expandafter\in@\csname sym#3\expandafter\endcsname
  3013.      \expandafter{\group@list}%
  3014.   \ifin@
  3015.     \begingroup
  3016.       \count\z@=#4\relax
  3017.       \count\tw@\count\z@
  3018.       \divide\count\z@\sixt@@n
  3019.       \count@\count\z@
  3020.       \multiply\count@\sixt@@n
  3021.       \advance\count\tw@-\count@
  3022.       \if\relax\noexpand#1% is command?
  3023.         \edef\reserved@a{\noexpand\in@{\string\mathchar}{\meaning#1}}%
  3024.         \reserved@a
  3025.         \ifin@
  3026.           \expandafter\set@mathsymbol
  3027.              \csname sym#3\endcsname#1#2%
  3028.              {\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
  3029.           \@font@info{Redeclaring math symbol \string#1}%
  3030.         \else
  3031.             \expandafter\ifx
  3032.             \csname\expandafter\@gobble\string#1\endcsname
  3033.             \relax
  3034.             \expandafter\set@mathsymbol
  3035.                \csname sym#3\endcsname#1#2%
  3036.                {\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
  3037.           \else
  3038.             \@latex@error{Command `\string#1' already defined}\@eha
  3039.           \fi
  3040.         \fi
  3041.       \else
  3042.         \expandafter\set@mathchar
  3043.           \csname sym#3\endcsname#1#2
  3044.           {\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
  3045.       \fi
  3046.     \endgroup
  3047.   \else
  3048.     \@latex@error{Symbol font `#3' is not defined}\@eha
  3049.   \fi
  3050. \@onlypreamble\DeclareMathSymbol
  3051. \def\set@mathchar#1#2#3#4{%
  3052.   \global\mathcode`#2="\mathchar@type#3\hexnumber@#1#4\relax}
  3053. \@onlypreamble\set@mathchar
  3054. \def\set@mathsymbol#1#2#3#4{%
  3055.   \global\mathchardef#2"\mathchar@type#3\hexnumber@#1#4\relax}
  3056. \@onlypreamble\set@mathsymbol
  3057. \def\DeclareMathDelimiter#1{%
  3058.   \if\relax\noexpand#1%
  3059.     \expandafter\@DeclareMathDelimiter
  3060.   \else
  3061.     \expandafter\@xDeclareMathDelimiter
  3062.   \fi
  3063.   #1}
  3064. \@onlypreamble\DeclareMathDelimiter
  3065. \def\@DeclareMathDelimiter#1#2#3#4#5#6{%
  3066.   \expandafter\in@\csname sym#3\expandafter\endcsname
  3067.      \expandafter{\group@list}%
  3068.   \ifin@
  3069.     \expandafter\in@\csname sym#5\expandafter\endcsname
  3070.        \expandafter{\group@list}%
  3071.     \ifin@
  3072.       \begingroup
  3073.         \count\z@=#4\relax
  3074.         \count\tw@\count\z@
  3075.         \divide\count\z@\sixt@@n
  3076.         \count@\count\z@
  3077.         \multiply\count@\sixt@@n
  3078.         \advance\count\tw@-\count@
  3079.         \edef\reserved@c{\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
  3080.       %
  3081.         \count\z@=#6\relax
  3082.         \count\tw@\count\z@
  3083.         \divide\count\z@\sixt@@n
  3084.         \count@\count\z@
  3085.         \multiply\count@\sixt@@n
  3086.         \advance\count\tw@-\count@
  3087.         \edef\reserved@d{\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
  3088.       %
  3089.         \edef\reserved@a{\noexpand\in@{\string\delimiter}{\meaning#1}}%
  3090.         \reserved@a
  3091.         \ifin@
  3092.           \expandafter\set@mathdelimiter
  3093.              \csname sym#3\expandafter\endcsname
  3094.              \csname sym#5\endcsname#1#2%
  3095.              \reserved@c\reserved@d
  3096.           \@font@info{Redeclaring math delimiter \string#1}%
  3097.         \else
  3098.             \expandafter\ifx
  3099.             \csname\expandafter\@gobble\string#1\endcsname
  3100.             \relax
  3101.             \expandafter\set@mathdelimiter
  3102.               \csname sym#3\expandafter\endcsname
  3103.               \csname sym#5\endcsname#1#2%
  3104.               \reserved@c\reserved@d
  3105.           \else
  3106.             \@latex@error{Command `\string#1' already defined}\@eha
  3107.           \fi
  3108.         \fi
  3109.       \endgroup
  3110.     \else
  3111.       \@latex@error{Symbol font `#5' is not defined}\@eha
  3112.     \fi
  3113.   \else
  3114.     \@latex@error{Symbol font `#3' is not defined}\@eha
  3115.   \fi
  3116. \@onlypreamble\@DeclareMathDelimiter
  3117. \def\@xDeclareMathDelimiter#1#2#3#4#5{%
  3118.   \expandafter\in@\csname sym#2\expandafter\endcsname
  3119.      \expandafter{\group@list}%
  3120.   \ifin@
  3121.     \expandafter\in@\csname sym#4\expandafter\endcsname
  3122.        \expandafter{\group@list}%
  3123.     \ifin@
  3124.       \begingroup
  3125.         \count\z@=#3\relax
  3126.         \count\tw@\count\z@
  3127.         \divide\count\z@\sixt@@n
  3128.         \count@\count\z@
  3129.         \multiply\count@\sixt@@n
  3130.         \advance\count\tw@-\count@
  3131.         \edef\reserved@c{\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
  3132.       %
  3133.         \count\z@=#5\relax
  3134.         \count\tw@\count\z@
  3135.         \divide\count\z@\sixt@@n
  3136.         \count@\count\z@
  3137.         \multiply\count@\sixt@@n
  3138.         \advance\count\tw@-\count@
  3139.         \edef\reserved@d{\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
  3140.         \expandafter\set@@mathdelimiter
  3141.            \csname sym#2\expandafter\endcsname\csname sym#4\endcsname#1%
  3142.            \reserved@c\reserved@d
  3143.       \endgroup
  3144.     \else
  3145.       \@latex@error{Symbol font `#4' is not defined}\@eha
  3146.     \fi
  3147.   \else
  3148.     \@latex@error{Symbol font `#2' is not defined}\@eha
  3149.   \fi
  3150. \@onlypreamble\@xDeclareMathDelimiter
  3151. \def\set@mathdelimiter#1#2#3#4#5#6{%
  3152.   \xdef#3{\delimiter"\mathchar@type#4\hexnumber@#1#5%
  3153.                                      \hexnumber@#2#6 }}
  3154. \@onlypreamble\set@mathdelimiter
  3155. \def\set@@mathdelimiter#1#2#3#4#5{%
  3156.   \global\delcode`#3="\hexnumber@#1#4\hexnumber@#2#5\relax}
  3157. \@onlypreamble\set@@mathdelimiter
  3158. \def\DeclareMathRadical#1#2#3#4#5{%
  3159.   \expandafter\ifx
  3160.        \csname\expandafter\@gobble\string#1\endcsname
  3161.        \relax
  3162.      \let#1\radical
  3163.   \fi
  3164.   \edef\reserved@a{\noexpand\in@{\string\radical}{\meaning#1}}%
  3165.   \reserved@a
  3166.   \ifin@
  3167.     \expandafter\in@\csname sym#2\expandafter\endcsname
  3168.        \expandafter{\group@list}%
  3169.     \ifin@
  3170.       \expandafter\in@\csname sym#4\expandafter\endcsname
  3171.          \expandafter{\group@list}%
  3172.       \ifin@
  3173.         \begingroup
  3174.           \count\z@=#3\relax
  3175.           \count\tw@\count\z@
  3176.           \divide\count\z@\sixt@@n
  3177.           \count@\count\z@
  3178.           \multiply\count@\sixt@@n
  3179.           \advance\count\tw@-\count@
  3180.           \edef\reserved@c{%
  3181.             \hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
  3182.           \count\z@=#5\relax
  3183.           \count\tw@\count\z@
  3184.           \divide\count\z@\sixt@@n
  3185.           \count@\count\z@
  3186.           \multiply\count@\sixt@@n
  3187.           \advance\count\tw@-\count@
  3188.           \edef\reserved@d{%
  3189.             \hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
  3190.           \xdef#1{\radical"\expandafter\hexnumber@
  3191.                                 \csname sym#2\endcsname\reserved@c
  3192.                              \expandafter\hexnumber@
  3193.                                 \csname sym#4\endcsname\reserved@d
  3194.                   \relax}%
  3195.         \endgroup
  3196.       \else
  3197.         \@latex@error{Symbol font `#4' is not defined}\@eha
  3198.       \fi
  3199.     \else
  3200.       \@latex@error{Symbol font `#2' is not defined}\@eha
  3201.     \fi
  3202.   \else
  3203.     \@latex@error{Command `\string#1' already defined}\@eha
  3204.   \fi
  3205. \@onlypreamble\DeclareMathRadical
  3206. \let\mathalpha\relax % just a dummy currently
  3207. \def\mathchar@type#1{%
  3208.   \ifodd 2#11 #1\else             % is this non-negative number?
  3209.     \ifx#1\mathord 0\else
  3210.      \ifx#1\mathop   1\else
  3211.        \ifx#1\mathbin 2\else
  3212.          \ifx#1\mathrel 3\else
  3213.            \ifx#1\mathopen 4\else
  3214.              \ifx#1\mathclose 5\else
  3215.                \ifx#1\mathpunct 6\else
  3216.                    7%             % anything else is variable ord
  3217.                \fi
  3218.              \fi
  3219.            \fi
  3220.          \fi
  3221.        \fi
  3222.      \fi
  3223.     \fi
  3224.   \fi}
  3225. \@onlypreamble\mathchar@type
  3226. \def\DeclareSymbolFontAlphabet#1#2{%
  3227.    \expandafter\DeclareSymbolFontAlphabet@
  3228.      \csname @\expandafter\@gobble\string#1\endcsname{#2}#1}
  3229. \@onlypreamble\DeclareSymbolFontAlphabet
  3230. \def\DeclareSymbolFontAlphabet@#1#2#3{%
  3231.     \@tempswatrue
  3232.   \expandafter\in@\csname sym#2\expandafter\endcsname
  3233.      \expandafter{\group@list}%
  3234.   \ifin@
  3235.     \expandafter\in@\expandafter#1\expandafter{\alpha@list}%
  3236.     \ifin@
  3237.       \@font@info{Redeclaring math alphabet \string#3}%
  3238.       \toks@{}%
  3239.       \def\alpha@elt##1##2##3{%
  3240.           \ifx##1#1\else\addto@hook\toks@{\alpha@elt##1##2##3}\fi}%
  3241.       \alpha@list
  3242.       \xdef\alpha@list{\the\toks@}%
  3243.       \def\version@elt##1{%
  3244.           \begingroup
  3245.             \toks@{}%
  3246.             \def\getanddefine@fonts####1####2{%
  3247.                \addto@hook\toks@{\getanddefine@fonts####1####2}}%
  3248.             \def\install@mathalphabet####1####2{%
  3249.                \ifx####1#1\else
  3250.                  \addto@hook\toks@{\install@mathalphabet
  3251.                                     ####1{####2}}\fi}%
  3252.             ##1%
  3253.             \xdef##1{\the\toks@}%
  3254.           \endgroup
  3255.           }%
  3256.       \version@list
  3257.     \else
  3258.       \expandafter\ifx
  3259.       \csname\expandafter\@gobble\string#1\endcsname
  3260.       \relax
  3261.       \else
  3262.         \edef\reserved@a{%
  3263.           \noexpand\in@{\string\use@mathgroup}{\meaning#1}}%
  3264.         \reserved@a
  3265.         \ifin@
  3266.           \@font@info{Redeclaring math alphabet \string#3}%
  3267.         \else
  3268.           \@tempswafalse
  3269.           \@latex@error{Command `\string#3' already defined}\@eha
  3270.         \fi
  3271.       \fi
  3272.     \fi
  3273.    \else
  3274.      \@tempswafalse
  3275.      \@latex@error{Unknown symbol font `#2'}\@eha
  3276.    \fi
  3277.    \if@tempswa
  3278.      \def\group@elt##1##2{%
  3279.         \expandafter\ifx\csname sym#2\endcsname##1%
  3280.         \expandafter\reserved@a\string##2\@nil
  3281.         \fi}%
  3282.      \def\reserved@a##1##2/##3\@nil{%
  3283.         \def\reserved@a{##2}}%
  3284.      \group@list
  3285.      \toks@{\relax\ifmmode \else \non@alpherr#1\fi}%
  3286.      \edef#1{\the\toks@
  3287.              \noexpand\use@mathgroup
  3288.              \expandafter\noexpand\csname M@\reserved@a\endcsname
  3289.              \csname sym#2\endcsname}%
  3290.      \def#3{\protect#1}%
  3291.    \fi
  3292. \@onlypreamble\DeclareSymbolFontAlphabet@
  3293. %%% From File: ltfssini.dtx
  3294. %% Copyright (C) 1989-1996 Frank Mittelbach and Rainer Sch\"opf,
  3295. %% all rights reserved.
  3296. \DeclareMathVersion{normal}
  3297. \DeclareMathVersion{bold}
  3298. \DeclareRobustCommand\rmfamily
  3299.         {\not@math@alphabet\rmfamily\mathrm
  3300.          \fontfamily\rmdefault\selectfont}
  3301. \DeclareRobustCommand\sffamily
  3302.         {\not@math@alphabet\sffamily\mathsf
  3303.          \fontfamily\sfdefault\selectfont}
  3304. \DeclareRobustCommand\ttfamily
  3305.         {\not@math@alphabet\ttfamily\mathtt
  3306.          \fontfamily\ttdefault\selectfont}
  3307. \DeclareRobustCommand\bfseries
  3308.         {\not@math@alphabet\bfseries\mathbf
  3309.          \fontseries\bfdefault\selectfont}
  3310. \DeclareRobustCommand\mdseries
  3311.         {\not@math@alphabet\mdseries\relax
  3312.          \fontseries\mddefault\selectfont}
  3313. \DeclareRobustCommand\upshape
  3314.         {\not@math@alphabet\upshape\relax
  3315.          \fontshape\updefault\selectfont}
  3316. \DeclareRobustCommand\slshape
  3317.         {\not@math@alphabet\slshape\relax
  3318.          \fontshape\sldefault\selectfont}
  3319. \DeclareRobustCommand\scshape
  3320.         {\not@math@alphabet\scshape\relax
  3321.          \fontshape\scdefault\selectfont}
  3322. \DeclareRobustCommand\itshape
  3323.         {\not@math@alphabet\itshape\mathit
  3324.          \fontshape\itdefault\selectfont}
  3325. \DeclareRobustCommand\em
  3326.         {\@nomath\em \ifdim \fontdimen\@ne\font >\z@
  3327.                        \upshape \else \itshape \fi}
  3328. \def\not@math@alphabet#1#2{%
  3329.    \relax
  3330.    \ifmmode
  3331.      \@latex@error{Command \noexpand#1invalid in math mode}%
  3332.         {%
  3333.          Please
  3334.          \ifx#2\relax
  3335.             define a new math alphabet^^J%
  3336.             if you want to use a special font in math mode%
  3337.           \else
  3338.             use the math alphabet \noexpand#2instead of
  3339.             the #1command%
  3340.          \fi
  3341.          .
  3342.         }%
  3343.    \fi}
  3344. \def\boldmath{\@nomath\boldmath
  3345.               \mathversion{bold}}
  3346. \def\unboldmath{\@nomath\unboldmath
  3347.               \mathversion{normal}}
  3348. \def\math@version{normal}
  3349. \def\newfont#1#2{\@ifdefinable#1{\font#1=#2\relax}}
  3350. \def\symbol#1{\char #1\relax}
  3351. \def\@setfontsize#1#2#3{\@nomath#1%
  3352.     \ifx\protect\@typeset@protect
  3353.       \let\@currsize#1%
  3354.     \fi
  3355.     \fontsize{#2}{#3}\selectfont}
  3356. \def\@setsize#1#2#3#4{\@setfontsize#1{#4}{#2}}
  3357. \def\oldstylenums#1{%
  3358.    \begingroup
  3359.     \spaceskip\fontdimen\tw@\font
  3360.     \usefont{OML}{cmm}{\f@series}{it}%
  3361.     \mathgroup\symletters #1%
  3362.    \endgroup
  3363. \def\hexnumber@#1{\ifcase\number#1
  3364.  0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or 8\or
  3365.  9\or A\or B\or C\or D\or E\or F\fi}
  3366. \def\nfss@text#1{{\mbox{#1}}}
  3367. \DeclareRobustCommand\normalfont
  3368.                  {\usefont\encodingdefault
  3369.                           \familydefault
  3370.                           \seriesdefault
  3371.                           \shapedefault
  3372.                   \relax}
  3373. \let\reset@font\normalfont
  3374. \def\not@base#1{\@latex@error
  3375.   {Command \noexpand#1not provided in base LaTeX2e}%
  3376.   {Load the latexsym or the amsfonts package to
  3377.    define this symbol}}
  3378. \def\mho{\not@base\mho}
  3379. \def\Join{\not@base\Join}
  3380. \def\Box{\not@base\Box}
  3381. \def\Diamond{\not@base\Diamond}
  3382. \def\leadsto{\not@base\leadsto}
  3383. \def\sqsubset{\not@base\sqsubset}
  3384. \def\sqsupset{\not@base\sqsupset}
  3385. \def\lhd{\not@base\lhd}
  3386. \def\unlhd{\not@base\unlhd}
  3387. \def\rhd{\not@base\rhd}
  3388. \def\unrhd{\not@base\unrhd}
  3389. \DeclareErrorFont{OT1}{cmr}{m}{n}{10}  %%% don't modify this setting
  3390.                                        %%% overwrite it in fontdef.cfg
  3391.                                        %%% if necessary
  3392. \ifnum\inputlineno=\m@ne
  3393. \InputIfFileExists{fonttext.cfg}
  3394.            {\typeout{====================================^^J%
  3395.                      ^^J%
  3396.                       Local config file fonttext.cfg used^^J%
  3397.                      ^^J%
  3398.                      ====================================}%
  3399.              \def\@addtofilelist##1{\xdef\@filelist{\@filelist,##1}}%
  3400.             }
  3401.            {\typeout{!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!^^J%
  3402.                      !^^J%
  3403.                      ! You MUST use a fonttext.cfg file!^^J%
  3404.                      ! As you are still using TeX2!!!!!^^J%
  3405.                      !^^J%
  3406.                      ! See the documentation file tex2.txt^^J%
  3407.                      !^^J%
  3408.                      !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}%
  3409.                     \batchmode \@@end}
  3410. \else
  3411. \InputIfFileExists{fonttext.cfg}
  3412.            {\typeout{====================================^^J%
  3413.                      ^^J%
  3414.                       Local config file fonttext.cfg used^^J%
  3415.                      ^^J%
  3416.                      ====================================}%
  3417.              \def\@addtofilelist##1{\xdef\@filelist{\@filelist,##1}}%
  3418.             }
  3419.            {\input{fonttext.ltx}}
  3420. \let\@addtofilelist\@gobble
  3421. \InputIfFileExists{fontmath.cfg}
  3422.            {\typeout{====================================^^J%
  3423.                      ^^J%
  3424.                       Local config file fontmath.cfg used^^J%
  3425.                      ^^J%
  3426.                      ====================================}%
  3427.              \def\@addtofilelist##1{\xdef\@filelist{\@filelist,##1}}%
  3428.             }
  3429.            {\input{fontmath.ltx}}
  3430. \let\@addtofilelist\@gobble
  3431. \InputIfFileExists{preload.cfg}
  3432.            {\typeout{====================================^^J%
  3433.                      ^^J%
  3434.                       Local config file preload.cfg used^^J%
  3435.                      ^^J%
  3436.                      =====================================}%
  3437.              \def\@addtofilelist##1{\xdef\@filelist{\@filelist,##1}}%
  3438.             }
  3439.            {\input{preload.ltx}}
  3440. \let\@addtofilelist\@gobble
  3441. \let\@acci\' \let\@accii\` \let\@acciii\=
  3442. %%% From File: ltfntcmd.dtx
  3443. %% \CharacterTable
  3444. %%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
  3445. %%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
  3446. %%   Digits        \0\1\2\3\4\5\6\7\8\9
  3447. %%   Exclamation   \!     Double quote  \"     Hash (number) \#
  3448. %%   Dollar        \$     Percent       \%     Ampersand     \&
  3449. %%   Acute accent  \'     Left paren    \(     Right paren   \)
  3450. %%   Asterisk      \*     Plus          \+     Comma         \,
  3451. %%   Minus         \-     Point         \.     Solidus       \/
  3452. %%   Colon         \:     Semicolon     \;     Less than     \<
  3453. %%   Equals        \=     Greater than  \>     Question mark \?
  3454. %%   Commercial at \@     Left bracket  \[     Backslash     \\
  3455. %%   Right bracket \]     Circumflex    \^     Underscore    \_
  3456. %%   Grave accent  \`     Left brace    \{     Vertical bar  \|
  3457. %%   Right brace   \}     Tilde         \~}
  3458. \def \DeclareTextFontCommand #1#2{%
  3459.   \DeclareRobustCommand#1[1]{%
  3460.     \ifmmode
  3461.       \nfss@text{#2##1}%
  3462.     \else
  3463.       \leavevmode
  3464.       {\text@command{##1}%
  3465.        #2\check@icl ##1\ifvmode\else\check@icr\fi
  3466.        \expandafter}%
  3467.     \fi
  3468.                        }%
  3469. \DeclareTextFontCommand{\textrm}{\rmfamily}
  3470. \DeclareTextFontCommand{\textsf}{\sffamily}
  3471. \DeclareTextFontCommand{\texttt}{\ttfamily}
  3472. \DeclareTextFontCommand{\textnormal}{\normalfont}
  3473. \DeclareTextFontCommand{\textbf}{\bfseries}
  3474. \DeclareTextFontCommand{\textmd}{\mdseries}
  3475. \DeclareTextFontCommand{\textit}{\itshape}
  3476. \DeclareTextFontCommand{\textsl}{\slshape}
  3477. \DeclareTextFontCommand{\textsc}{\scshape}
  3478. \DeclareTextFontCommand{\textup}{\upshape}
  3479. \DeclareTextFontCommand{\emph}{\em}
  3480. \let \nocorr \relax
  3481. \let \check@icl \@empty
  3482. \let \check@icr \@empty
  3483. \def \text@command #1{%
  3484.   \def \reserved@a {#1}%
  3485.   \ifx \reserved@a \@empty
  3486.     \let \check@icl \@empty
  3487.     \let \check@icr \@empty
  3488.   \else
  3489.     \ifx \reserved@a \space
  3490.       \let \check@icl \@empty
  3491.       \let \check@icr \@empty
  3492.     \else
  3493.       \check@nocorr@ #1\nocorr\@nil
  3494.     \fi
  3495.   \fi
  3496. \def \check@nocorr@ #1#2\nocorr#3\@nil {%
  3497.   \let \check@icl \maybe@ic
  3498.   \def \check@icr {\aftergroup \maybe@ic}%
  3499.   \def \reserved@a {\nocorr}%
  3500.   \def \reserved@b {#1}%
  3501.   \def \reserved@c {#3}%
  3502.   \ifx \reserved@a \reserved@b
  3503.     \ifx \reserved@c \@empty
  3504.       \let \check@icl \@empty
  3505.     \else
  3506.       \let \check@icl \@empty
  3507.       \let \check@icr \@empty
  3508.     \fi
  3509.   \else
  3510.     \ifx \reserved@c \@empty
  3511.     \else
  3512.       \let \check@icr \@empty
  3513.     \fi
  3514.   \fi
  3515. \def \maybe@ic {\futurelet\@let@token\maybe@ic@}
  3516. \def \maybe@ic@ {%
  3517.   \ifdim \fontdimen\@ne\font>\z@
  3518.   \else
  3519.     \@tempswatrue
  3520.     \expandafter\@tfor\expandafter\reserved@a\expandafter:\expandafter=%
  3521.         \nocorrlist
  3522.     \do \t@st@ic
  3523.     \if@tempswa \sw@slant \fi
  3524.   \fi
  3525. \def \t@st@ic {%
  3526.   \expandafter\let\expandafter\reserved@b\expandafter=\reserved@a\relax
  3527.   \ifx\reserved@b\@let@token
  3528.     \@tempswafalse
  3529.     \@break@tfor
  3530.   \fi
  3531. \def \sw@slant {%
  3532.   \ifdim \lastskip=\z@
  3533.     \fix@penalty
  3534.   \else
  3535.     \skip@ \lastskip
  3536.     \unskip
  3537.     \fix@penalty
  3538.     \hskip \skip@
  3539.   \fi
  3540. \def \fix@penalty {%
  3541.   \ifnum \lastpenalty=\z@
  3542.     \@@italiccorr
  3543.   \else
  3544.     \count@ \lastpenalty
  3545.     \unpenalty
  3546.     \@@italiccorr
  3547.     \penalty \count@
  3548.   \fi
  3549. \def \nocorrlist {,.}
  3550. \ifx \nfss@text\@undefined
  3551.   \def \nfss@text {\leavevmode\hbox}
  3552. \def \DeclareOldFontCommand #1#2#3{%
  3553.   \DeclareRobustCommand #1{\@fontswitch {#2}{#3}}%
  3554. \def \@fontswitch #1#2{%
  3555.   \ifmmode
  3556.      \let \math@bgroup \relax
  3557.      \def \math@egroup {\let \math@bgroup \@@math@bgroup
  3558.                         \let \math@egroup \@@math@egroup}%
  3559.      #2\relax
  3560.   \else
  3561.      #1%
  3562.   \fi
  3563. \let \@@math@bgroup \math@bgroup
  3564. \let \@@math@egroup \math@egroup
  3565. \@onlypreamble \DeclareTextFontCommand
  3566. \@onlypreamble \DeclareOldFontCommand
  3567. \def\normalsize{%
  3568.   \@latex@error {The font size command \protect\normalsize\space
  3569.               is not defined:\MessageBreak
  3570.               there is probably something wrong with
  3571.               the class file}\@eha
  3572. %%% From File: ltcounts.dtx
  3573. \def\setcounter#1#2{%
  3574.   \@ifundefined{c@#1}%
  3575.     {\@nocounterr{#1}}%
  3576.     {\global\csname c@#1\endcsname#2\relax}}
  3577. \def\addtocounter#1#2{%
  3578.   \@ifundefined{c@#1}%
  3579.     {\@nocounterr{#1}}%
  3580.     {\global\advance\csname c@#1\endcsname #2\relax}}
  3581. \def\newcounter#1{%
  3582.   \expandafter\@ifdefinable \csname c@#1\endcsname
  3583.     {\@definecounter{#1}}%
  3584.   \@ifnextchar[{\@newctr{#1}}{}}
  3585. \def\value#1{\csname c@#1\endcsname}
  3586. \def\@newctr#1[#2]{%
  3587.   \@ifundefined{c@#2}{\@nocounterr{#2}}{\@addtoreset{#1}{#2}}}
  3588. \def\stepcounter#1{%
  3589.   \addtocounter{#1}\@ne
  3590.   \begingroup
  3591.     \let\@elt\@stpelt
  3592.     \csname cl@#1\endcsname
  3593.   \endgroup}
  3594. \def\@stpelt#1{\global\csname c@#1\endcsname \z@}
  3595. \def\cl@@ckpt{\@elt{page}}
  3596. \def\@definecounter#1{\expandafter\newcount\csname c@#1\endcsname
  3597.      \setcounter{#1}\z@
  3598.      \global\expandafter\let\csname cl@#1\endcsname\@empty
  3599.      \@addtoreset{#1}{@ckpt}%
  3600.      \global\expandafter\let\csname p@#1\endcsname\@empty
  3601.      \expandafter
  3602.      \gdef\csname the#1\expandafter\endcsname\expandafter
  3603.           {\expandafter\@arabic\csname c@#1\endcsname}}
  3604. \def\@addtoreset#1#2{\expandafter\@cons\csname cl@#2\endcsname {{#1}}}
  3605. \def\arabic#1{\expandafter\@arabic\csname c@#1\endcsname}
  3606. \def\roman#1{\expandafter\@roman\csname c@#1\endcsname}
  3607. \def\Roman#1{\expandafter\@Roman\csname c@#1\endcsname}
  3608. \def\alph#1{\expandafter\@alph\csname c@#1\endcsname}
  3609. \def\Alph#1{\expandafter\@Alph\csname c@#1\endcsname}
  3610. \def\fnsymbol#1{\expandafter\@fnsymbol\csname c@#1\endcsname}
  3611. \def\@arabic#1{\number #1}  %% changed 29 Apr 86
  3612. \def\@roman#1{\romannumeral #1}
  3613. \def\@Roman#1{\expandafter\uppercase\expandafter{\romannumeral #1}}
  3614. \def\@alph#1{%
  3615.   \ifcase#1\or a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or
  3616.    k\or l\or m\or n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or
  3617.     y\or z\else\@ctrerr\fi}
  3618. \def\@Alph#1{%
  3619.   \ifcase#1\or A\or B\or C\or D\or E\or F\or G\or H\or I\or J\or
  3620.    K\or L\or M\or N\or O\or P\or Q\or R\or S\or T\or U\or V\or W\or X\or
  3621.     Y\or Z\else\@ctrerr\fi}
  3622. \def\@fnsymbol#1{\ensuremath{\ifcase#1\or *\or \dagger\or \ddagger\or
  3623.    \mathchar "278\or \mathchar "27B\or \|\or **\or \dagger\dagger
  3624.    \or \ddagger\ddagger \else\@ctrerr\fi}}
  3625. %%% From File: ltpageno.dtx
  3626. \message{page nos.,}
  3627. \countdef\c@page=0 \c@page=1
  3628. \def\cl@page{}
  3629. \def\pagenumbering#1{%
  3630.   \global\c@page \@ne \gdef\thepage{\csname @#1\endcsname
  3631.    \c@page}}
  3632. %%% From File: ltxref.dtx
  3633. \message{x-ref,}
  3634. \def\G@refundefinedtrue{%
  3635.   \gdef\@refundefined{%
  3636.     \@latex@warning@no@line{There were undefined references}}}
  3637. \let\@refundefined\relax
  3638. \def\@setref#1#2#3{%
  3639.   \ifx#1\relax
  3640.    \protect\G@refundefinedtrue
  3641.    \nfss@text{\reset@font\bfseries ??}%
  3642.    \@latex@warning{Reference `#3' on page \thepage \space
  3643.              undefined}%
  3644.   \else
  3645.    \expandafter#2#1\null
  3646.   \fi}
  3647. \def\ref#1{\expandafter\@setref\csname r@#1\endcsname\@firstoftwo{#1}}
  3648. \def\pageref#1{\expandafter\@setref\csname r@#1\endcsname
  3649.                                    \@secondoftwo{#1}}
  3650. \def\@newl@bel#1#2#3{%
  3651.   \@ifundefined{#1@#2}%
  3652.     \relax
  3653.     {\gdef \@multiplelabels {%
  3654.        \@latex@warning@no@line{There were multiply-defined labels}}%
  3655.      \@latex@warning@no@line{Label `#2' multiply defined}}%
  3656.   \global\@namedef{#1@#2}{#3}}
  3657. \def\newlabel{\@newl@bel r}
  3658. \@onlypreamble\@newl@bel
  3659. \let \@multiplelabels \relax
  3660. \def\label#1{\@bsphack
  3661.   \protected@write\@auxout{}%
  3662.          {\string\newlabel{#1}{{\@currentlabel}{\thepage}}}%
  3663.   \@esphack}
  3664. \def\refstepcounter#1{\stepcounter{#1}%
  3665.     \protected@edef\@currentlabel
  3666.        {\csname p@#1\endcsname\csname the#1\endcsname}%
  3667. \def\@currentlabel{}
  3668. %%% From File: ltlength.dtx
  3669. \message{lengths,}
  3670. \def\newlength#1{\@ifdefinable#1{\newskip#1}}
  3671. \def\setlength#1#2{#1#2\relax}
  3672. \def\addtolength#1#2{\advance#1 #2\relax}
  3673. \def\@settodim#1#2#3{\setbox\@tempboxa\hbox{{#3}}#2#1\@tempboxa
  3674.        \setbox\@tempboxa\box\voidb@x}
  3675. \def\settoheight{\@settodim\ht}
  3676. \def\settodepth {\@settodim\dp}
  3677. \def\settowidth {\@settodim\wd}
  3678. \def\@settopoint#1{\divide#1\p@\multiply#1\p@}
  3679. %%% From File: ltmiscen.dtx
  3680. \message{environments,}
  3681. \def\@currenvir{document}
  3682. \def\@ignorefalse{\global\let\if@ignore\iffalse}
  3683. \def\@ignoretrue {\global\let\if@ignore\iftrue}
  3684. \@ignorefalse
  3685. \let\ignorespacesafterend\@ignoretrue
  3686. \def\enddocument{%
  3687.    \@enddocumenthook
  3688.    \@checkend{document}%
  3689.    \clearpage
  3690.    \begingroup
  3691.      \if@filesw
  3692.        \immediate\closeout\@mainaux
  3693.        \let\@setckpt\@gobbletwo
  3694.        \let\@newl@bel\@testdef
  3695.        \@tempswafalse
  3696.        \makeatletter \input\jobname.aux
  3697.      \fi
  3698.      \@dofilelist
  3699.      \ifdim \font@submax >\fontsubfuzz\relax
  3700.        \@font@warning{Size substitutions with differences\MessageBreak
  3701.                   up to \font@submax\space have occured.\@gobbletwo}%
  3702.      \fi
  3703.      \@defaultsubs
  3704.      \@refundefined
  3705.      \if@filesw
  3706.        \ifx \@multiplelabels \relax
  3707.          \if@tempswa
  3708.            \@latex@warning@no@line{Label(s) may have changed.
  3709.                Rerun to get cross-references right}%
  3710.          \fi
  3711.        \else
  3712.          \@multiplelabels
  3713.        \fi
  3714.      \fi
  3715.    \endgroup
  3716.    \deadcycles\z@\@@end}
  3717. \def\@testdef #1#2#3{%
  3718.   \def\reserved@a{#3}\expandafter \ifx \csname #1@#2\endcsname
  3719.  \reserved@a  \else \@tempswatrue \fi}
  3720. \long\def\@writefile#1#2{%
  3721.   \@ifundefined{tf@#1}\relax
  3722.     {\@temptokena{#2}%
  3723.      \immediate\write\csname tf@#1\endcsname{\the\@temptokena}%
  3724.     }%
  3725. \def\stop{\clearpage\deadcycles\z@\let\par\@@par\@@end}
  3726. \everypar{\@nodocument} %% To get an error if text appears before the
  3727. \nullfont               %% \begin{document}
  3728. \def\begin#1{%
  3729.   \@ifundefined{#1}%
  3730.     {\def\reserved@a{\@latex@error{Environment #1 undefined}\@eha}}%
  3731.     {\def\reserved@a{\def\@currenvir{#1}%
  3732.      \edef\@currenvline{\on@line}%
  3733.      \csname #1\endcsname}}%
  3734.   \@ignorefalse
  3735.   \begingroup\@endpefalse\reserved@a}
  3736. \def\end#1{%
  3737.   \csname end#1\endcsname\@checkend{#1}%
  3738.   \expandafter\endgroup\if@endpe\@doendpe\fi
  3739.   \if@ignore\@ignorefalse\ignorespaces\fi}
  3740. \def\@checkend#1{\def\reserved@a{#1}\ifx
  3741.       \reserved@a\@currenvir \else\@badend{#1}\fi}
  3742. \let\@currenvline\@empty
  3743. \message{center,}
  3744. \def\@centercr{\ifhmode \unskip\else \@nolnerr\fi
  3745.        \par\@ifstar{\nobreak\@xcentercr}\@xcentercr}
  3746. \def\@xcentercr{\addvspace{-\parskip}\@ifnextchar
  3747.     [\@icentercr\ignorespaces}
  3748. \def\@icentercr[#1]{\vskip #1\ignorespaces}
  3749. \def\center{\trivlist \centering\item\relax}
  3750. \def\endcenter{\endtrivlist}
  3751. \def\centering{%
  3752.   \let\\\@centercr
  3753.   \rightskip\@flushglue\leftskip\@flushglue
  3754.   \parindent\z@\parfillskip\z@skip}
  3755. \newskip\@rightskip \@rightskip \z@skip
  3756. \def\flushleft{\trivlist \raggedright\item\relax}
  3757. \def\endflushleft{\endtrivlist}
  3758. \def\raggedright{%
  3759.   \let\\\@centercr\@rightskip\@flushglue \rightskip\@rightskip
  3760.   \leftskip\z@skip
  3761.   \parindent\z@}
  3762. \def\flushright{\trivlist \raggedleft\item\relax}
  3763. \def\endflushright{\endtrivlist}
  3764. \def\raggedleft{%
  3765.   \let\\\@centercr
  3766.   \rightskip\z@skip\leftskip\@flushglue
  3767.   \parindent\z@\parfillskip\z@skip}
  3768. \message{verbatim,}
  3769. {\catcode`\ =\active%
  3770. \gdef\@vobeyspaces{\catcode`\ \active\let \@xobeysp}}
  3771. \begingroup \catcode `|=0 \catcode `[= 1
  3772. \catcode`]=2 \catcode `\{=12 \catcode `\}=12
  3773. \catcode`\\=12 |gdef|@xverbatim#1\end{verbatim}[#1|end[verbatim]]
  3774. |gdef|@sxverbatim#1\end{verbatim*}[#1|end[verbatim*]]
  3775. |endgroup
  3776. \def\@verbatim{\trivlist \item\relax
  3777.   \if@minipage\else\vskip\parskip\fi
  3778.   \leftskip\@totalleftmargin\rightskip\z@skip
  3779.   \parindent\z@\parfillskip\@flushglue\parskip\z@skip
  3780.   \@@par
  3781.   \@tempswafalse
  3782.   \def\par{%
  3783.     \if@tempswa
  3784.       \leavevmode \null \@@par\penalty\interlinepenalty
  3785.     \else
  3786.       \@tempswatrue
  3787.       \ifhmode\@@par\penalty\interlinepenalty\fi
  3788.     \fi}%
  3789.   \let\do\@makeother \dospecials
  3790.   \obeylines \verbatim@font \@noligs
  3791.   \everypar \expandafter{\the\everypar \unpenalty}%
  3792. \def\verbatim{\@verbatim \frenchspacing\@vobeyspaces \@xverbatim}
  3793. \def\endverbatim{\if@newlist \leavevmode\fi\endtrivlist}
  3794. \def\verbatim@font{\normalfont\ttfamily}
  3795. \@namedef{verbatim*}{\@verbatim\@sxverbatim}
  3796. \expandafter\let\csname endverbatim*\endcsname =\endverbatim
  3797. \def\@makeother#1{\catcode`#112\relax}
  3798. \let\verb@balance@group\@empty
  3799. \def\verb@egroup{\global\let\verb@balance@group\@empty\egroup}
  3800. \begingroup
  3801.   \obeylines%
  3802.   \gdef\verb@eol@error{\obeylines%
  3803.     \def^^M{\verb@egroup\@latex@error{%
  3804.             \noexpand\verb ended by end of line}\@ehc}}%
  3805. \endgroup
  3806. \def\verb{\relax\ifmmode\hbox\else\leavevmode\null\fi
  3807.   \bgroup
  3808.     \verb@eol@error \let\do\@makeother \dospecials
  3809.     \verbatim@font\@noligs
  3810.     \@ifstar\@sverb\@verb}
  3811. \def\@sverb#1{%
  3812.   \catcode`#1\active
  3813.   \lccode`\~`#1%
  3814.   \gdef\verb@balance@group{\verb@egroup
  3815.      \@latex@error{\noexpand\verb illegal in command argument}\@ehc}%
  3816.   \aftergroup\verb@balance@group
  3817.   \lowercase{\let~\verb@egroup}}%
  3818. \def\@verb{\@vobeyspaces \frenchspacing \@sverb}
  3819. \def\verbatim@nolig@list{\do\`\do\<\do\>\do\,\do\'\do\-}
  3820. \def\do@noligs#1{%
  3821.   \catcode`#1\active
  3822.   \begingroup
  3823.      \lccode`\~`#1\relax
  3824.      \lowercase{\endgroup\def~{\leavevmode\kern\z@\char`#1}}}
  3825. \def\@noligs{\let\do\do@noligs \verbatim@nolig@list}
  3826. %%% From File: ltmath.dtx
  3827. \message{math definitions,}
  3828. %% \CharacterTable
  3829. %%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
  3830. %%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
  3831. %%   Digits        \0\1\2\3\4\5\6\7\8\9
  3832. %%   Exclamation   \!     Double quote  \"     Hash (number) \#
  3833. %%   Dollar        \$     Percent       \%     Ampersand     \&
  3834. %%   Acute accent  \'     Left paren    \(     Right paren   \)
  3835. %%   Asterisk      \*     Plus          \+     Comma         \,
  3836. %%   Minus         \-     Point         \.     Solidus       \/
  3837. %%   Colon         \:     Semicolon     \;     Less than     \<
  3838. %%   Equals        \=     Greater than  \>     Question mark \?
  3839. %%   Commercial at \@     Left bracket  \[     Backslash     \\
  3840. %%   Right bracket \]     Circumflex    \^     Underscore    \_
  3841. %%   Grave accent  \`     Left brace    \{     Vertical bar  \|
  3842. %%   Right brace   \}     Tilde         \~}
  3843. \def\log{\mathop{\operator@font log}\nolimits}
  3844. \def\lg{\mathop{\operator@font lg}\nolimits}
  3845. \def\ln{\mathop{\operator@font ln}\nolimits}
  3846. \def\lim{\mathop{\operator@font lim}}
  3847. \def\limsup{\mathop{\operator@font lim\,sup}}
  3848. \def\liminf{\mathop{\operator@font lim\,inf}}
  3849. \def\sin{\mathop{\operator@font sin}\nolimits}
  3850. \def\arcsin{\mathop{\operator@font arcsin}\nolimits}
  3851. \def\sinh{\mathop{\operator@font sinh}\nolimits}
  3852. \def\cos{\mathop{\operator@font cos}\nolimits}
  3853. \def\arccos{\mathop{\operator@font arccos}\nolimits}
  3854. \def\cosh{\mathop{\operator@font cosh}\nolimits}
  3855. \def\tan{\mathop{\operator@font tan}\nolimits}
  3856. \def\arctan{\mathop{\operator@font arctan}\nolimits}
  3857. \def\tanh{\mathop{\operator@font tanh}\nolimits}
  3858. \def\cot{\mathop{\operator@font cot}\nolimits}
  3859. \def\coth{\mathop{\operator@font coth}\nolimits}
  3860. \def\sec{\mathop{\operator@font sec}\nolimits}
  3861. \def\csc{\mathop{\operator@font csc}\nolimits}
  3862. \def\max{\mathop{\operator@font max}}
  3863. \def\min{\mathop{\operator@font min}}
  3864. \def\sup{\mathop{\operator@font sup}}
  3865. \def\inf{\mathop{\operator@font inf}}
  3866. \def\arg{\mathop{\operator@font arg}\nolimits}
  3867. \def\ker{\mathop{\operator@font ker}\nolimits}
  3868. \def\dim{\mathop{\operator@font dim}\nolimits}
  3869. \def\hom{\mathop{\operator@font hom}\nolimits}
  3870. \def\det{\mathop{\operator@font det}}
  3871. \def\exp{\mathop{\operator@font exp}\nolimits}
  3872. \def\Pr{\mathop{\operator@font Pr}}
  3873. \def\gcd{\mathop{\operator@font gcd}}
  3874. \def\deg{\mathop{\operator@font deg}\nolimits}
  3875. \def\bmod{%
  3876.   \nonscript\mskip-\medmuskip\mkern5mu%
  3877.   \mathbin{\operator@font mod}\penalty900\mkern5mu%
  3878.   \nonscript\mskip-\medmuskip}
  3879. \def\pmod#1{%
  3880.   \allowbreak\mkern18mu({\operator@font mod}\,\,#1)}
  3881. \def\bigl{\mathopen\big}
  3882. \def\bigm{\mathrel\big}
  3883. \def\bigr{\mathclose\big}
  3884. \def\Bigl{\mathopen\Big}
  3885. \def\Bigm{\mathrel\Big}
  3886. \def\Bigr{\mathclose\Big}
  3887. \def\biggl{\mathopen\bigg}
  3888. \def\biggm{\mathrel\bigg}
  3889. \def\biggr{\mathclose\bigg}
  3890. \def\Biggl{\mathopen\Bigg}
  3891. \def\Biggm{\mathrel\Bigg}
  3892. \def\Biggr{\mathclose\Bigg}
  3893. \newdimen\jot
  3894. \jot=3pt
  3895. \newcount\interdisplaylinepenalty
  3896. \interdisplaylinepenalty=100
  3897. \def\choose{\atopwithdelims()}
  3898. \def\brack{\atopwithdelims[]}
  3899. \def\brace{\atopwithdelims\{\}}
  3900. \def\mathpalette#1#2{%
  3901.   \mathchoice
  3902.     {#1\displaystyle{#2}}%
  3903.     {#1\textstyle{#2}}%
  3904.     {#1\scriptstyle{#2}}%
  3905.     {#1\scriptscriptstyle{#2}}}
  3906. \newbox\rootbox
  3907. \def\root#1\of{%
  3908.   \setbox\rootbox\hbox{$\m@th\scriptscriptstyle{#1}$}%
  3909.   \mathpalette\r@@t}
  3910. \def\r@@t#1#2{%
  3911.   \setbox\z@\hbox{$\m@th#1\sqrtsign{#2}$}%
  3912.   \dimen@\ht\z@ \advance\dimen@-\dp\z@
  3913.   \mkern5mu\raise.6\dimen@\copy\rootbox
  3914.   \mkern-10mu\box\z@}
  3915. \newif\ifv@
  3916. \newif\ifh@
  3917. \def\vphantom{\v@true\h@false\ph@nt}
  3918. \def\hphantom{\v@false\h@true\ph@nt}
  3919. \def\phantom{\v@true\h@true\ph@nt}
  3920. \def\ph@nt{%
  3921.   \ifmmode
  3922.     \expandafter\mathpalette\expandafter\mathph@nt
  3923.   \else
  3924.     \expandafter\makeph@nt
  3925.   \fi}
  3926. \def\makeph@nt#1{%
  3927.   \setbox\z@\hbox{\color@begingroup#1\color@endgroup}\finph@nt}
  3928. \def\mathph@nt#1#2{%
  3929.   \setbox\z@\hbox{$\m@th#1{#2}$}\finph@nt}
  3930. \def\finph@nt{%
  3931.   \setbox\tw@\null
  3932.   \ifv@ \ht\tw@\ht\z@ \dp\tw@\dp\z@\fi
  3933.   \ifh@ \wd\tw@\wd\z@\fi \box\tw@}
  3934. \def\mathstrut{\vphantom(}
  3935. \def\smash{%
  3936.   \relax % \relax, in case this comes first in \halign
  3937.   \ifmmode
  3938.     \expandafter\mathpalette\expandafter\mathsm@sh
  3939.   \else
  3940.     \expandafter\makesm@sh
  3941.   \fi}
  3942. \def\makesm@sh#1{%
  3943.   \setbox\z@\hbox{\color@begingroup#1\color@endgroup}\finsm@sh}
  3944. \def\mathsm@sh#1#2{%
  3945.   \setbox\z@\hbox{$\m@th#1{#2}$}\finsm@sh}
  3946. \def\finsm@sh{\ht\z@\z@ \dp\z@\z@ \box\z@}
  3947. \def\buildrel#1\over#2{\mathrel{\mathop{\kern\z@#2}\limits^{#1}}}
  3948. \def\cases#1{\left\{\,\vcenter{\normalbaselines\m@th
  3949.     \ialign{$##\hfil$&\quad{##}\hfil\crcr#1\crcr}}\right.}
  3950. \def\matrix#1{\null\,\vcenter{\normalbaselines\m@th
  3951.     \ialign{\hfil$##$\hfil&&\quad\hfil$##$\hfil\crcr
  3952.       \mathstrut\crcr\noalign{\kern-\baselineskip}
  3953.       #1\crcr\mathstrut\crcr\noalign{\kern-\baselineskip}}}\,}
  3954. \def\pmatrix#1{\left(\matrix{#1}\right)}
  3955. \def\bordermatrix#1{\begingroup \m@th
  3956.   \@tempdima 8.75\p@
  3957.   \setbox\z@\vbox{%
  3958.     \def\cr{\crcr\noalign{\kern2\p@\global\let\cr\endline}}%
  3959.     \ialign{$##$\hfil\kern2\p@\kern\@tempdima&\thinspace\hfil$##$\hfil
  3960.       &&\quad\hfil$##$\hfil\crcr
  3961.       \omit\strut\hfil\crcr\noalign{\kern-\baselineskip}%
  3962.       #1\crcr\omit\strut\cr}}%
  3963.   \setbox\tw@\vbox{\unvcopy\z@\global\setbox\@ne\lastbox}%
  3964.   \setbox\tw@\hbox{\unhbox\@ne\unskip\global\setbox\@ne\lastbox}%
  3965.   \setbox\tw@\hbox{$\kern\wd\@ne\kern-\@tempdima\left(\kern-\wd\@ne
  3966.     \global\setbox\@ne\vbox{\box\@ne\kern2\p@}%
  3967.     \vcenter{\kern-\ht\@ne\unvbox\z@\kern-\baselineskip}\,\right)$}%
  3968.   \null\;\vbox{\kern\ht\@ne\box\tw@}\endgroup}
  3969. \def\openup{\afterassignment\@penup\dimen@}
  3970. \def\@penup{\advance\lineskip\dimen@
  3971.   \advance\baselineskip\dimen@
  3972.   \advance\lineskiplimit\dimen@}
  3973. \newif\ifdt@p
  3974. \def\displ@y{\global\dt@ptrue\openup\jot\m@th
  3975.   \everycr{\noalign{\ifdt@p \global\dt@pfalse \ifdim\prevdepth>-1000\p@
  3976.       \vskip-\lineskiplimit \vskip\normallineskiplimit \fi
  3977.       \else \penalty\interdisplaylinepenalty \fi}}}
  3978. \def\@lign{\tabskip\z@skip\everycr{}} % restore inside \displ@y
  3979. \def\displaylines#1{\displ@y \tabskip\z@skip
  3980.   \halign{\hb@xt@\displaywidth{$\@lign\hfil\displaystyle##\hfil$}\crcr
  3981.     #1\crcr}}
  3982. \let\sp=^
  3983. \let\sb=_
  3984. \def\>{\mskip\medmuskip}
  3985. \def\;{\mskip\thickmuskip}
  3986. \def\!{\mskip-\thinmuskip}
  3987. \def\*{\discretionary{\thinspace\the\textfont2\char2}{}{}}
  3988. \let\:=\>
  3989. {\catcode`\'=\active \gdef'{^\bgroup\prim@s}}
  3990. \def\prim@s{%
  3991.   \prime\futurelet\@let@token\pr@m@s}
  3992. \def\pr@m@s{%
  3993.   \ifx'\@let@token
  3994.     \expandafter\pr@@@s
  3995.   \else
  3996.     \ifx^\@let@token
  3997.       \expandafter\expandafter\expandafter\pr@@@t
  3998.     \else
  3999.       \egroup
  4000.     \fi
  4001.   \fi}
  4002. \def\pr@@@s#1{\prim@s}
  4003. \def\pr@@@t#1#2{#2\egroup}
  4004. {\catcode`\_=\active \gdef_{\_}} % _ in math is
  4005.                                  % either subscript or \_
  4006. \def\({\relax\ifmmode\@badmath\else$\fi}
  4007. \def\){\relax\ifmmode\ifinner$\else\@badmath\fi\else \@badmath\fi}
  4008. \def\[{%
  4009.    \relax\ifmmode
  4010.       \@badmath
  4011.    \else
  4012.       \ifvmode
  4013.          \nointerlineskip
  4014.          \makebox[.6\linewidth]%
  4015.       \fi
  4016.       $$%%$$ BRACE MATCH HACK
  4017.    \fi
  4018. \def\]{%
  4019.    \relax\ifmmode
  4020.       \ifinner
  4021.          \@badmath
  4022.       \else
  4023.          $$%%$$ BRACE MATCH HACK
  4024.       \fi
  4025.    \else
  4026.       \@badmath
  4027.    \fi
  4028.    \ignorespaces
  4029. \let\math=\(
  4030. \let\endmath=\)
  4031. \def\displaymath{\[}
  4032. \def\enddisplaymath{\]\@ignoretrue}
  4033. \@definecounter{equation}
  4034. \def\equation{$$\refstepcounter{equation}}
  4035. \def\endequation{\eqno \hbox{\@eqnnum}$$\@ignoretrue}
  4036. \def\@eqnnum{{\normalfont \normalcolor (\theequation)}}
  4037. \def\stackrel#1#2{\mathrel{\mathop{#2}\limits^{#1}}}
  4038. \def\frac#1#2{{\begingroup#1\endgroup\over#2}}
  4039. \DeclareRobustCommand\sqrt{\@ifnextchar[\@sqrt\sqrtsign}
  4040. \def\@sqrt[#1]{\root #1\of}
  4041. \newcount\@eqcnt
  4042. \newcount\@eqpen
  4043. \newif\if@eqnsw\@eqnswtrue
  4044. \newskip\@centering
  4045. \@centering = 0pt plus 1000pt
  4046. \def\eqnarray{%
  4047.    \stepcounter{equation}%
  4048.    \def\@currentlabel{\p@equation\theequation}%
  4049.    \global\@eqnswtrue
  4050.    \m@th
  4051.    \global\@eqcnt\z@
  4052.    \tabskip\@centering
  4053.    \let\\\@eqncr
  4054.    $$\everycr{}\halign to\displaywidth\bgroup
  4055.        \hskip\@centering$\displaystyle\tabskip\z@skip{##}$\@eqnsel
  4056.       &\global\@eqcnt\@ne\hskip \tw@\arraycolsep \hfil${##}$\hfil
  4057.       &\global\@eqcnt\tw@ \hskip \tw@\arraycolsep
  4058.          $\displaystyle{##}$\hfil\tabskip\@centering
  4059.       &\global\@eqcnt\thr@@ \hb@xt@\z@\bgroup\hss##\egroup
  4060.          \tabskip\z@skip
  4061.       \cr
  4062. \def\endeqnarray{%
  4063.       \@@eqncr
  4064.       \egroup
  4065.       \global\advance\c@equation\m@ne
  4066.    $$\@ignoretrue
  4067. \let\@eqnsel=\relax
  4068. \def\nonumber{\global\@eqnswfalse}
  4069. \def\@eqncr{%
  4070.    {\ifnum0=`}\fi
  4071.    \@ifstar{%
  4072.       \global\@eqpen\@M\@yeqncr
  4073.    }{%
  4074.       \global\@eqpen\interdisplaylinepenalty \@yeqncr
  4075.    }%
  4076. \def\@yeqncr{\@testopt\@xeqncr\z@skip}
  4077. \def\@xeqncr[#1]{%
  4078.    \ifnum0=`{\fi}%
  4079.    \@@eqncr
  4080.    \noalign{\penalty\@eqpen\vskip\jot\vskip #1\relax}%
  4081. \def\@@eqncr{\let\reserved@a\relax
  4082.     \ifcase\@eqcnt \def\reserved@a{& & &}\or \def\reserved@a{& &}%
  4083.      \or \def\reserved@a{&}\else
  4084.        \let\reserved@a\@empty
  4085.        \@latex@error{Too many columns in eqnarray environment}\@ehc\fi
  4086.      \reserved@a \if@eqnsw\@eqnnum\stepcounter{equation}\fi
  4087.      \global\@eqnswtrue\global\@eqcnt\z@\cr}
  4088. \let\@seqncr=\@eqncr
  4089. \@namedef{eqnarray*}{\def\@eqncr{\nonumber\@seqncr}\eqnarray}
  4090. \@namedef{endeqnarray*}{\nonumber\endeqnarray}
  4091. \def\lefteqn#1{\rlap{$\displaystyle #1$}}
  4092. \DeclareRobustCommand{\ensuremath}{%
  4093.   \ifmmode
  4094.     \expandafter\@firstofone
  4095.   \else
  4096.     \expandafter\@ensuredmath
  4097.   \fi}
  4098. \long\def\@ensuredmath#1{$\relax#1$}
  4099. %%% From File: ltlists.dtx
  4100. \newskip\topsep
  4101. \newskip\partopsep
  4102. \newskip\itemsep
  4103. \newskip\parsep
  4104. \newskip\@topsep
  4105. \newskip\@topsepadd
  4106. \newskip\@outerparskip
  4107. \newdimen\leftmargin
  4108. \newdimen\rightmargin
  4109. \newdimen\listparindent
  4110. \newdimen\itemindent
  4111. \newdimen\labelwidth
  4112. \newdimen\labelsep
  4113. \newdimen\linewidth
  4114. \newdimen\@totalleftmargin \@totalleftmargin=\z@
  4115. \newdimen\leftmargini
  4116. \newdimen\leftmarginii
  4117. \newdimen\leftmarginiii
  4118. \newdimen\leftmarginiv
  4119. \newdimen\leftmarginv
  4120. \newdimen\leftmarginvi
  4121. \newcount\@listdepth \@listdepth=0
  4122. \newcount\@itempenalty
  4123. \newcount\@beginparpenalty
  4124. \newcount\@endparpenalty
  4125. \newbox\@labels
  4126. \newif\if@inlabel \@inlabelfalse
  4127. \newif\if@newlist   \@newlistfalse
  4128. \newif\if@noparitem \@noparitemfalse
  4129. \newif\if@noparlist \@noparlistfalse
  4130. \newif\if@noitemarg \@noitemargfalse
  4131. \newif\if@nmbrlist  \@nmbrlistfalse
  4132. \def\list#1#2{\ifnum \@listdepth >5\relax \@toodeep
  4133.      \else \global\advance\@listdepth\@ne \fi
  4134.   \rightmargin \z@ \listparindent\z@ \itemindent\z@
  4135.   \csname @list\romannumeral\the\@listdepth\endcsname
  4136.   \def\@itemlabel{#1}\let\makelabel\@mklab \@nmbrlistfalse #2\relax
  4137.   \@trivlist
  4138.   \parskip\parsep \parindent\listparindent
  4139.   \advance\linewidth -\rightmargin \advance\linewidth -\leftmargin
  4140.   \advance\@totalleftmargin \leftmargin
  4141.   \parshape \@ne \@totalleftmargin \linewidth
  4142.   \ignorespaces}
  4143. \newcount\par@deathcycles
  4144. \def\@trivlist{%
  4145.   \if@noskipsec \leavevmode \fi
  4146.   \@topsepadd \topsep
  4147.   \ifvmode
  4148.     \advance\@topsepadd \partopsep
  4149.   \else
  4150.     \unskip \par
  4151.   \fi
  4152.   \if@inlabel
  4153.     \@noparitemtrue
  4154.     \@noparlisttrue
  4155.   \else
  4156.     \if@newlist \@noitemerr \fi
  4157.     \@noparlistfalse
  4158.     \@topsep \@topsepadd
  4159.   \fi
  4160.   \advance\@topsep \parskip
  4161.   \leftskip \z@skip
  4162.   \rightskip \@rightskip
  4163.   \parfillskip \@flushglue
  4164.   \par@deathcycles \z@
  4165.   \@setpar{\if@newlist
  4166.              \advance\par@deathcycles \@ne
  4167.              \ifnum \par@deathcycles >\@m
  4168.                \@noitemerr
  4169.                {\@@par}%
  4170.              \fi
  4171.            \else
  4172.              {\@@par}%
  4173.            \fi}%
  4174.   \global \@newlisttrue
  4175.   \@outerparskip \parskip}
  4176. \def\trivlist{\parsep\parskip\@nmbrlistfalse
  4177.   \@trivlist \labelwidth\z@ \leftmargin\z@
  4178.   \itemindent\z@
  4179.   \let\@itemlabel\@empty
  4180.   \def\makelabel##1{##1}}
  4181. \def\endlist{\global\advance\@listdepth\m@ne
  4182.     \endtrivlist}
  4183. \def\endtrivlist{%
  4184.   \if@inlabel
  4185.     \leavevmode
  4186.     \global \@inlabelfalse
  4187.   \fi
  4188.   \if@newlist
  4189.     \@noitemerr
  4190.     \global \@newlistfalse
  4191.   \fi
  4192.   \ifhmode\unskip \par\fi
  4193.   \if@noparlist \else
  4194.     \ifdim\lastskip >\z@
  4195.       \@tempskipa\lastskip \vskip -\lastskip
  4196.       \advance\@tempskipa\parskip \advance\@tempskipa -\@outerparskip
  4197.       \vskip\@tempskipa
  4198.     \fi
  4199.     \@endparenv
  4200.   \fi
  4201. \def\@endparenv{%
  4202.   \addpenalty\@endparpenalty\addvspace\@topsepadd\@endpetrue}
  4203. \def\@doendpe{\@endpetrue
  4204.      \def\par{\@restorepar\everypar{}\par\@endpefalse}\everypar
  4205.                {{\setbox\z@\lastbox}\everypar{}\@endpefalse}}
  4206. \newif\if@endpe
  4207. \@endpefalse
  4208. \def\@mklab#1{\hfil #1}
  4209. \def\item{\@inmatherr\item
  4210.   \@ifnextchar [\@item{\@noitemargtrue \@item[\@itemlabel]}}
  4211. \def\@donoparitem{\@noparitemfalse
  4212.    \global\setbox\@labels\hbox{\hskip -\leftmargin
  4213.                                \unhbox\@labels
  4214.                                 \hskip \leftmargin}\if@minipage\else
  4215.   \@tempskipa\lastskip
  4216.   \vskip -\lastskip \advance\@tempskipa\@outerparskip
  4217.   \advance\@tempskipa -\parskip \vskip\@tempskipa\fi}
  4218. \def\@item[#1]{\if@noparitem \@donoparitem
  4219.   \else \if@inlabel \indent \par \fi
  4220.          \ifhmode \unskip\unskip \par \fi
  4221.          \if@newlist \if@nobreak \@nbitem \else
  4222.                         \addpenalty\@beginparpenalty
  4223.                         \addvspace\@topsep \addvspace{-\parskip}\fi
  4224.            \else \addpenalty\@itempenalty \addvspace\itemsep
  4225.           \fi
  4226.     \global\@inlabeltrue
  4227. \everypar{\@minipagefalse
  4228.           \global\@newlistfalse
  4229.           \if@inlabel
  4230.             \global\@inlabelfalse
  4231.            {\setbox\z@\lastbox}%
  4232.             \box\@labels
  4233.             \penalty\z@
  4234.           \fi
  4235.           \if@nobreak
  4236.             \@nobreakfalse
  4237.             \clubpenalty \@M
  4238.           \else
  4239.             \clubpenalty \@clubpenalty
  4240.             \everypar{}%
  4241.           \fi}%
  4242. \if@noitemarg \@noitemargfalse \if@nmbrlist
  4243.       \refstepcounter\@listctr\fi \fi
  4244. \sbox\@tempboxa{\makelabel{#1}}%
  4245. \global\setbox\@labels
  4246.  \hbox{\unhbox\@labels \hskip \itemindent
  4247.        \hskip -\labelwidth \hskip -\labelsep
  4248.        \ifdim \wd\@tempboxa >\labelwidth
  4249.                 \box\@tempboxa
  4250.           \else \hbox to\labelwidth {\unhbox\@tempboxa}\fi
  4251.        \hskip \labelsep}\ignorespaces}
  4252. \def\makelabel#1{\@latex@error{Lonely \string\item--perhaps a missing
  4253.         list environment}\@ehc}
  4254. \def\@nbitem{\@tempskipa\@outerparskip \advance\@tempskipa -\parskip
  4255.               \addvspace\@tempskipa}
  4256. \def\usecounter#1{\@nmbrlisttrue\def\@listctr{#1}\setcounter{#1}\z@}
  4257. \newcount\@enumdepth \@enumdepth = 0
  4258. \@definecounter{enumi}
  4259. \@definecounter{enumii}
  4260. \@definecounter{enumiii}
  4261. \@definecounter{enumiv}
  4262. \def\enumerate{%
  4263.   \ifnum \@enumdepth >\thr@@\@toodeep\else
  4264.     \advance\@enumdepth\@ne
  4265.     \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
  4266.       \expandafter
  4267.       \list
  4268.         \csname label\@enumctr\endcsname
  4269.         {\usecounter\@enumctr\def\makelabel##1{\hss\llap{##1}}}%
  4270.   \fi}
  4271. \let\endenumerate =\endlist
  4272. \newcount\@itemdepth \@itemdepth = 0
  4273. \def\itemize{%
  4274.   \ifnum \@itemdepth >\thr@@\@toodeep\else
  4275.     \advance\@itemdepth\@ne
  4276.     \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
  4277.     \expandafter
  4278.     \list
  4279.       \csname\@itemitem\endcsname
  4280.       {\def\makelabel##1{\hss\llap{##1}}}%
  4281.   \fi}
  4282. \let\enditemize =\endlist
  4283. %%% From File: ltboxes.dtx
  4284. \message{boxes,}
  4285. \def\makebox{%
  4286.   \leavevmode
  4287.   \@ifnextchar(%)
  4288.     \@makepicbox
  4289.     {\@ifnextchar[\@makebox\mbox}}
  4290. \long\def\mbox#1{\leavevmode\hbox{#1}}
  4291. \def\@makebox[#1]{%
  4292.   \@ifnextchar [{\@imakebox[#1]}{\@imakebox[#1][c]}}
  4293. \long\def\@begin@tempboxa#1#2{%
  4294.    \begingroup
  4295.      \setbox\@tempboxa#1{\color@begingroup#2\color@endgroup}%
  4296.      \def\width{\wd\@tempboxa}%
  4297.      \def\height{\ht\@tempboxa}%
  4298.      \def\depth{\dp\@tempboxa}%
  4299.      \let\totalheight\@ovri
  4300.      \totalheight\height
  4301.      \advance\totalheight\depth}
  4302. \let\@end@tempboxa\endgroup
  4303. \def\bm@c{\hss\unhbox\@tempboxa\hss}
  4304. \def\bm@l{\unhbox\@tempboxa\hss}\let\bm@t\bm@l
  4305. \def\bm@r{\hss\unhbox\@tempboxa}\let\bm@b\bm@r
  4306. \def\bm@s{\unhbox\@tempboxa}
  4307. \long\def\@imakebox[#1][#2]#3{%
  4308.   \@begin@tempboxa\hbox{#3}%
  4309.     \setlength\@tempdima{#1}%       support calc
  4310.     \hb@xt@\@tempdima{\csname bm@#2\endcsname}%
  4311.   \@end@tempboxa}
  4312. \def\@makepicbox(#1,#2){%
  4313.   \@ifnextchar[{\@imakepicbox(#1,#2)}{\@imakepicbox(#1,#2)[]}}
  4314. \long\def\@imakepicbox(#1,#2)[#3]#4{%
  4315.   \vbox to#2\unitlength
  4316.    {\let\mb@b\vss \let\mb@l\hss\let\mb@r\hss
  4317.     \let\mb@t\vss
  4318.     \@tfor\reserved@a :=#3\do{%
  4319.       \if s\reserved@a
  4320.         \let\mb@l\relax\let\mb@r\relax
  4321.       \else
  4322.         \expandafter\let\csname mb@\reserved@a\endcsname\relax
  4323.       \fi}%
  4324.     \mb@t
  4325.     \hb@xt@ #1\unitlength{\mb@l #4\mb@r}%
  4326.     \mb@b
  4327.     \kern\z@}}
  4328. \let\set@color\relax
  4329. \let\color@begingroup\relax
  4330. \let\color@endgroup\relax
  4331. \let\color@setgroup\relax
  4332. \let\normalcolor\relax
  4333. \let\color@hbox\relax
  4334. \let\color@vbox\relax
  4335. \let\color@endbox\relax
  4336. \def\newsavebox#1{\@ifdefinable{#1}{\newbox#1}}
  4337. \def\savebox#1{%
  4338.   \@ifnextchar(%)
  4339.     {\@savepicbox#1}{\@ifnextchar[{\@savebox#1}{\sbox#1}}}
  4340. \long\def\sbox#1#2{\setbox#1\hbox{%
  4341.   \color@setgroup#2\color@endgroup}}
  4342. \def\@savebox#1[#2]{%
  4343.   \@ifnextchar [{\@isavebox#1[#2]}{\@isavebox#1[#2][c]}}
  4344. \long\def\@isavebox#1[#2][#3]#4{%
  4345.   \sbox#1{\@imakebox[#2][#3]{#4}}}
  4346. \def\@savepicbox#1(#2,#3){%
  4347.   \@ifnextchar[%]
  4348.     {\@isavepicbox#1(#2,#3)}{\@isavepicbox#1(#2,#3)[]}}
  4349. \long\def\@isavepicbox#1(#2,#3)[#4]#5{%
  4350.   \sbox#1{\@imakepicbox(#2,#3)[#4]{#5}}}
  4351. \def\lrbox#1{%
  4352.   \edef\reserved@a{%
  4353.     \endgroup
  4354.     \setbox#1\hbox{%
  4355.       \begingroup\aftergroup}%
  4356.         \def\noexpand\@currenvir{\@currenvir}%
  4357.         \def\noexpand\@currenvline{\on@line}}%
  4358.   \reserved@a
  4359.     \@endpefalse
  4360.     \color@setgroup
  4361.       \ignorespaces}
  4362. \def\endlrbox{\unskip\color@endgroup}
  4363. \def\usebox#1{\leavevmode\copy #1\relax}
  4364. \long\def\frame#1{%
  4365.   \leavevmode
  4366.   \hbox{%
  4367.     \hskip-\@wholewidth
  4368.     \vbox{%
  4369.       \vskip-\@wholewidth
  4370.       \hrule \@height\@wholewidth
  4371.       \hbox{%
  4372.         \vrule\@width\@wholewidth
  4373.         #1%
  4374.         \vrule\@width\@wholewidth}%
  4375.       \hrule\@height\@wholewidth
  4376.       \vskip-\@wholewidth}%
  4377.     \hskip-\@wholewidth}}
  4378. \newdimen\fboxrule
  4379. \newdimen\fboxsep
  4380. \long\def\fbox#1{%
  4381.   \leavevmode
  4382.   \setbox\@tempboxa\hbox{%
  4383.     \color@begingroup
  4384.       \kern\fboxsep{#1}\kern\fboxsep
  4385.     \color@endgroup}%
  4386.   \@frameb@x\relax}
  4387. \def\framebox{%
  4388.   \@ifnextchar(%)
  4389.     \@framepicbox{\@ifnextchar[\@framebox\fbox}}
  4390. \def\@framebox[#1]{%
  4391.   \@ifnextchar[%]
  4392.     {\@iframebox[#1]}%
  4393.     {\@iframebox[#1][c]}}
  4394. \long\def\@iframebox[#1][#2]#3{%
  4395.   \leavevmode
  4396.   \@begin@tempboxa\hbox{#3}%
  4397.     \setlength\@tempdima{#1}%
  4398.     \setbox\@tempboxa\hb@xt@\@tempdima
  4399.          {\kern\fboxsep\csname bm@#2\endcsname\kern\fboxsep}%
  4400.     \@frameb@x{\kern-\fboxrule}%
  4401.   \@end@tempboxa}
  4402. \def\@frameb@x#1{%
  4403.   \@tempdima\fboxrule
  4404.   \advance\@tempdima\fboxsep
  4405.   \advance\@tempdima\dp\@tempboxa
  4406.   \hbox{%
  4407.     \lower\@tempdima\hbox{%
  4408.       \vbox{%
  4409.         \hrule\@height\fboxrule
  4410.         \hbox{%
  4411.           \vrule\@width\fboxrule
  4412.           #1%
  4413.           \vbox{%
  4414.             \vskip\fboxsep
  4415.             \box\@tempboxa
  4416.             \vskip\fboxsep}%
  4417.           #1%
  4418.           \vrule\@width\fboxrule}%
  4419.         \hrule\@height\fboxrule}%
  4420.                           }%
  4421.         }%
  4422. \def\@framepicbox(#1,#2){%
  4423.   \@ifnextchar[{\@iframepicbox(#1,#2)}{\@iframepicbox(#1,#2)[]}}
  4424. \long\def\@iframepicbox(#1,#2)[#3]#4{%
  4425.   \frame{\@imakepicbox(#1,#2)[#3]{#4}}}
  4426. \def\parbox{%
  4427.   \@ifnextchar[%]
  4428.     \@iparbox
  4429.     {\@iiiparbox c\@empty[s]}}
  4430. \def\@iparbox[#1]{%
  4431.   \@ifnextchar[%]
  4432.     {\@iiparbox{#1}}%
  4433.     {\@iiiparbox{#1}\@empty[s]}}
  4434. \def\@iiparbox#1[#2]{%
  4435.   \@ifnextchar[%]
  4436.     {\@iiiparbox{#1}{#2}}%
  4437.     {\@iiiparbox{#1}{#2}[#1]}}
  4438. \let\@parboxto\@empty
  4439. \long\def\@iiiparbox#1#2[#3]#4#5{%
  4440.   \leavevmode
  4441.   \@pboxswfalse
  4442.   \setlength\@tempdima{#4}%
  4443.   \@begin@tempboxa\vbox{\hsize\@tempdima\@parboxrestore#5\@@par}%
  4444.     \ifx\@empty#2\else
  4445.       \setlength\@tempdimb{#2}%
  4446.       \def\@parboxto{to\@tempdimb}%
  4447.     \fi
  4448.     \if#1b\vbox
  4449.     \else\if #1t\vtop
  4450.     \else\ifmmode\vcenter
  4451.     \else\@pboxswtrue $\vcenter
  4452.     \fi\fi\fi
  4453.     \@parboxto{\let\hss\vss\let\unhbox\unvbox
  4454.        \csname bm@#3\endcsname}%
  4455.     \if@pboxsw \m@th$\fi
  4456.   \@end@tempboxa}
  4457. \def\@arrayparboxrestore{%
  4458.   \let\if@nobreak\iffalse
  4459.   \let\if@noskipsec\iffalse
  4460.   \let\par\@@par
  4461.   \let\-\@dischyph
  4462.   \let\'\@acci\let\`\@accii\let\=\@acciii
  4463.   \parindent\z@ \parskip\z@skip
  4464.   \everypar{}%
  4465.   \linewidth\hsize
  4466.   \@totalleftmargin\z@
  4467.   \leftskip\z@skip \rightskip\z@skip \@rightskip\z@skip
  4468.   \parfillskip\@flushglue \lineskip\normallineskip
  4469.   \baselineskip\normalbaselineskip
  4470.   \sloppy}
  4471. \def\@parboxrestore{\@arrayparboxrestore\let\\\@normalcr}
  4472. \def\@minipagefalse{\global\let\if@minipage\iffalse}
  4473. \def\@minipagetrue {\global\let\if@minipage\iftrue}
  4474. \@minipagefalse
  4475. \def\minipage{%
  4476.   \@ifnextchar[%]
  4477.     \@iminipage
  4478.     {\@iiiminipage c\@empty[s]}}
  4479. \def\@iminipage[#1]{%
  4480.   \@ifnextchar[%]
  4481.     {\@iiminipage{#1}}%
  4482.     {\@iiiminipage{#1}\@empty[s]}}
  4483. \def\@iiminipage#1[#2]{%
  4484.   \@ifnextchar[%]
  4485.     {\@iiiminipage{#1}{#2}}%
  4486.     {\@iiiminipage{#1}{#2}[#1]}}
  4487. \def\@iiiminipage#1#2[#3]#4{%
  4488.   \leavevmode
  4489.   \@pboxswfalse
  4490.   \setlength\@tempdima{#4}%
  4491.   \def\@mpargs{{#1}{#2}[#3]{#4}}%
  4492.   \setbox\@tempboxa\vbox\bgroup
  4493.     \color@begingroup
  4494.       \hsize\@tempdima
  4495.       \textwidth\hsize \columnwidth\hsize
  4496.       \@parboxrestore
  4497.       \def\@mpfn{mpfootnote}\def\thempfn{\thempfootnote}\c@mpfootnote\z@
  4498.       \let\@footnotetext\@mpfootnotetext
  4499.       \let\@listdepth\@mplistdepth \@mplistdepth\z@
  4500.       \@minipagerestore
  4501.       \@setminipage}
  4502.  \let\@minipagerestore=\relax
  4503. \def\endminipage{%
  4504.     \par
  4505.     \unskip
  4506.     \ifvoid\@mpfootins\else
  4507.       \vskip\skip\@mpfootins
  4508.       \normalcolor
  4509.       \footnoterule
  4510.       \unvbox\@mpfootins
  4511.     \fi
  4512.     \@minipagefalse   %% added 24 May 89
  4513.   \color@endgroup
  4514.   \egroup
  4515.   \expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}}
  4516. \newcount\@mplistdepth
  4517. \newinsert\@mpfootins
  4518. \long\def\@mpfootnotetext#1{%
  4519.   \global\setbox\@mpfootins\vbox{%
  4520.     \unvbox\@mpfootins
  4521.     \reset@font\footnotesize
  4522.     \hsize\columnwidth
  4523.     \@parboxrestore
  4524.     \protected@edef\@currentlabel
  4525.          {\csname p@mpfootnote\endcsname\@thefnmark}%
  4526.     \color@begingroup
  4527.       \@makefntext{%
  4528.         \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
  4529.     \color@endgroup}}
  4530. \newif\if@pboxsw
  4531. \def\rule{\@ifnextchar[\@rule{\@rule[\z@]}}
  4532. \def\@rule[#1]#2#3{%
  4533.   \@tempdima#3\advance\@tempdima #1%
  4534.   \leavevmode
  4535.   \hbox{\vrule\@width#2\@height\@tempdima\@depth-#1}}
  4536. \let\@@underline\underline
  4537. \def\underline#1{%
  4538.   \relax
  4539.   \ifmmode\@@underline{#1}%
  4540.   \else $\@@underline{\hbox{#1}}\m@th$\relax\fi}
  4541. \def\raisebox#1{%
  4542.   \leavevmode
  4543.   \@ifnextchar[{\@rsbox{#1}}{\@irsbox{#1}[]}}
  4544. \def\@rsbox#1[#2]{%
  4545.   \@ifnextchar[{\@iirsbox{#1}[#2]}{\@irsbox{#1}[#2]}}
  4546. \long\def\@irsbox#1[#2]#3{%
  4547.   \@begin@tempboxa\hbox{#3}%
  4548.     \setlength\@tempdima{#1}%
  4549.     \ifx\\#2\\\else\setlength\@tempdimb{#2}\fi
  4550.     \setbox\@tempboxa\hbox{\raise\@tempdima\box\@tempboxa}%
  4551.     \ifx\\#2\\\else\ht\@tempboxa\@tempdimb\fi
  4552.     \box\@tempboxa
  4553.   \@end@tempboxa}
  4554. \long\def\@iirsbox#1[#2][#3]#4{%
  4555.   \@begin@tempboxa\hbox{#4}%
  4556.     \setlength\@tempdima{#1}%
  4557.     \setlength\@tempdimb{#2}%
  4558.     \setlength\dimen@{#3}%
  4559.     \setbox\@tempboxa\hbox{\raise\@tempdima\box\@tempboxa}%
  4560.     \ht\@tempboxa\@tempdimb
  4561.     \dp\@tempboxa\dimen@
  4562.     \box\@tempboxa
  4563.   \@end@tempboxa}
  4564. \def\@finalstrut#1{%
  4565.   \unskip\ifhmode\nobreak\fi\vrule\@width\z@\@height\z@\@depth\dp#1}
  4566. \def\@@line{\hb@xt@\hsize}
  4567. \def\leftline#1{\@@line{#1\hss}}
  4568. \def\rightline#1{\@@line{\hss#1}}
  4569. \def\centerline#1{\@@line{\hss#1\hss}}
  4570. \def\rlap#1{\hb@xt@\z@{#1\hss}}
  4571. \def\llap#1{\hb@xt@\z@{\hss#1}}
  4572. %%% From File: lttab.dtx
  4573. \expandafter\let\csname ver@autotabg.sty\endcsname\fmtversion
  4574. \newdimen\@gtempa
  4575. \chardef\@firsttab=\the\allocationnumber
  4576. \newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa
  4577. \newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa
  4578. \newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa
  4579. \newdimen\@gtempa
  4580. \chardef\@maxtab=\the\allocationnumber
  4581. \dimen\@firsttab=0pt
  4582. \newcount\@nxttabmar
  4583. \newcount\@curtabmar
  4584. \newcount\@curtab
  4585. \newcount\@hightab
  4586. \newcount\@tabpush
  4587. \newbox\@curline
  4588. \newbox\@curfield
  4589. \newbox\@tabfbox
  4590. \newif\if@rjfield
  4591. \gdef\@startline{%
  4592.      \ifnum \@nxttabmar >\@hightab
  4593.        \@badtab
  4594.        \global\@nxttabmar \@hightab
  4595.      \fi
  4596.      \global\@curtabmar \@nxttabmar
  4597.      \global\@curtab \@curtabmar
  4598.      \global\setbox\@curline \hbox {}%
  4599.      \@startfield
  4600.      \strut}
  4601. \gdef\@stopline{%
  4602.   \unskip
  4603.   \@stopfield
  4604.   \if@rjfield
  4605.     \global\@rjfieldfalse
  4606.     \@tempdima\@totalleftmargin
  4607.     \advance\@tempdima\linewidth
  4608.     \hb@xt@\@tempdima{%
  4609.       \@itemfudge\hskip\dimen\@curtabmar
  4610.       \box\@curline
  4611.       \hfil
  4612.       \box\@curfield}%
  4613.   \else
  4614.     \@addfield
  4615.     \hbox{\@itemfudge\hskip\dimen\@curtabmar\box\@curline}%
  4616.   \fi}
  4617. \gdef\@startfield{%
  4618.   \global\setbox\@curfield\hbox\bgroup\color@begingroup}
  4619. \gdef\@stopfield{%
  4620.   \color@endgroup\egroup}
  4621. \gdef\@contfield{%
  4622.   \global\setbox\@curfield\hbox\bgroup\color@begingroup
  4623.   \unhbox\@curfield}
  4624. \gdef\@addfield{\global\setbox\@curline\hbox{\unhbox
  4625.      \@curline\unhbox\@curfield}}
  4626. \gdef\@ifatmargin{\ifdim \wd\@curline =\z@}
  4627. \gdef\@tabcr{\@stopline \@ifstar{\penalty \@M \@xtabcr}\@xtabcr}
  4628. \gdef\@xtabcr{\@ifnextchar[\@itabcr{\@startline\ignorespaces}}
  4629. \gdef\@itabcr[#1]{\vskip #1\@startline\ignorespaces}
  4630. \gdef\kill{\@stopfield\@startline\ignorespaces}
  4631. \gdef\tabbing{\lineskip \z@skip\let\>\@rtab\let\<\@ltab\let\=\@settab
  4632.      \let\+\@tabplus\let\-\@tabminus\let\`\@tabrj\let\'\@tablab
  4633.      \let\\=\@tabcr
  4634.      \@hightab\@firsttab
  4635.      \global\@nxttabmar\@firsttab
  4636.      \dimen\@firsttab\@totalleftmargin
  4637.      \global\@tabpush\z@ \global\@rjfieldfalse
  4638.      \trivlist \item\relax
  4639.      \if@minipage\else\vskip\parskip\fi
  4640.      \setbox\@tabfbox\hbox{%
  4641.        \rlap{\hskip\@totalleftmargin\indent\the\everypar}}%
  4642.      \def\@itemfudge{\box\@tabfbox}%
  4643.      \@startline\ignorespaces}
  4644. \gdef\endtabbing{%
  4645.   \@stopline\ifnum\@tabpush >\z@ \@badpoptabs \fi\endtrivlist}
  4646. \gdef\@rtab{\@stopfield\@addfield\ifnum \@curtab<\@hightab
  4647.       \global\advance\@curtab \@ne \else\@badtab\fi
  4648.       \@tempdima\dimen\@curtab
  4649.       \advance\@tempdima -\dimen\@curtabmar
  4650.       \advance\@tempdima -\wd\@curline
  4651.       \global\setbox\@curline\hbox{\unhbox\@curline\hskip\@tempdima}%
  4652.       \@startfield\ignorespaces}
  4653. \gdef\@settab{\@stopfield\@addfield
  4654.   \ifnum \@curtab <\@maxtab
  4655.     \ifnum\@curtab =\@hightab
  4656.       \advance\@hightab \@ne
  4657.     \fi
  4658.     \global\advance\@curtab \@ne
  4659.   \else
  4660.     \@latex@error{Tab overflow}\@ehd
  4661.   \fi
  4662.   \dimen\@curtab \dimen\@curtabmar
  4663.   \advance\dimen\@curtab \wd\@curline
  4664.   \@startfield
  4665.   \ignorespaces}
  4666. \gdef\@ltab{\@ifatmargin\ifnum\@curtabmar >\@firsttab
  4667.       \global\advance\@curtab \m@ne \global\advance\@curtabmar\m@ne\else
  4668.       \@badtab\fi\else
  4669.       \@latex@error{\string\<\space in mid line}\@ehd\fi\ignorespaces}
  4670. \gdef\@tabplus{%
  4671.   \ifnum\@nxttabmar<\@hightab
  4672.     \global\advance\@nxttabmar\@ne
  4673.   \else
  4674.     \@badtab
  4675.   \fi
  4676.   \ignorespaces}
  4677. \gdef\@tabminus{%
  4678.   \ifnum\@nxttabmar>\@firsttab
  4679.     \global\advance\@nxttabmar\m@ne
  4680.   \else
  4681.     \@badtab
  4682.   \fi
  4683.   \ignorespaces}
  4684. \gdef\@tabrj{%
  4685.   \@stopfield\@addfield\global\@rjfieldtrue\@startfield\ignorespaces}
  4686. \gdef\@tablab{%
  4687.   \@stopfield
  4688.   \global\setbox\@curline\hbox{%
  4689.     \box\@curline
  4690.     \hskip-\wd\@curfield \hskip-\tabbingsep
  4691.     \box\@curfield
  4692.     \hskip\tabbingsep}%
  4693.   \@startfield
  4694.   \ignorespaces}
  4695. \gdef\pushtabs{%
  4696.   \@stopfield\@addfield\global\advance\@tabpush \@ne \begingroup
  4697.        \@contfield}
  4698. \gdef\poptabs{\@stopfield\@addfield
  4699.   \ifnum \@tabpush >\z@
  4700.     \endgroup
  4701.     \global\advance\@tabpush \m@ne
  4702.     \ifnum \@curtab >\@hightab
  4703.       \global \@curtab \@hightab
  4704.       \@badtab
  4705.     \fi
  4706.   \else
  4707.     \@badpoptabs
  4708.   \fi
  4709.   \@contfield}
  4710. \newdimen\tabbingsep
  4711. \def\extracolsep#1{\tabskip #1\relax}
  4712. \def\array{\let\@acol\@arrayacol \let\@classz\@arrayclassz
  4713.  \let\@classiv\@arrayclassiv
  4714.  \let\\\@arraycr\let\@halignto\@empty\@tabarray}
  4715. \def\endarray{\crcr\egroup\egroup}
  4716. \def\endtabular{\crcr\egroup\egroup $\egroup}
  4717. \expandafter \let \csname endtabular*\endcsname = \endtabular
  4718. \def\tabular{\let\@halignto\@empty\@tabular}
  4719. \@namedef{tabular*}#1{\def\@halignto{to#1}\@tabular}
  4720. \def\@tabular{\leavevmode \hbox \bgroup $\let\@acol\@tabacol
  4721.    \let\@classz\@tabclassz
  4722.    \let\@classiv\@tabclassiv \let\\\@tabularcr\@tabarray}
  4723. \def\@tabarray{\m@th\@ifnextchar[\@array{\@array[c]}}
  4724. \def\@array[#1]#2{%
  4725.   \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi\fi
  4726.   \bgroup
  4727.   \setbox\@arstrutbox\hbox{%
  4728.     \vrule \@height\arraystretch\ht\strutbox
  4729.            \@depth\arraystretch \dp\strutbox
  4730.            \@width\z@}%
  4731.   \@mkpream{#2}%
  4732.   \edef\@preamble{%
  4733.     \ialign \noexpand\@halignto
  4734.       \bgroup \@arstrut \@preamble \tabskip\z@skip \cr}%
  4735.   \let\@startpbox\@@startpbox \let\@endpbox\@@endpbox
  4736.   \let\tabularnewline\\%
  4737.     \let\par\@empty
  4738.     \let\@sharp##%
  4739.     \set@typeset@protect
  4740.     \lineskip\z@skip\baselineskip\z@skip
  4741.     \@preamble}
  4742. \def\@arraycr{%
  4743.   ${\ifnum0=`}\fi\@ifstar\@xarraycr\@xarraycr}
  4744. \def\@xarraycr{\@ifnextchar[\@argarraycr{\ifnum0=`{\fi}${}\cr}}
  4745. \def\@argarraycr[#1]{%
  4746.   \ifnum0=`{\fi}${}\ifdim #1>\z@ \@xargarraycr{#1}\else
  4747.    \@yargarraycr{#1}\fi}
  4748. \let\tabularnewline\relax
  4749. \def\@tabularcr{%
  4750.   {\ifnum0=`}\fi\@ifstar\@xtabularcr\@xtabularcr}
  4751. \def\@xtabularcr{\@ifnextchar[\@argtabularcr{\ifnum0=`{\fi}\cr}}
  4752. \def\@argtabularcr[#1]{%
  4753.   \ifnum0=`{\fi}%
  4754.     \ifdim #1>\z@
  4755.       \unskip\@xargarraycr{#1}%
  4756.     \else
  4757.       \@yargarraycr{#1}%
  4758.     \fi}
  4759. \def\@xargarraycr#1{\@tempdima #1\advance\@tempdima \dp \@arstrutbox
  4760.    \vrule \@height\z@ \@depth\@tempdima \@width\z@ \cr}
  4761. \def\@yargarraycr#1{\cr\noalign{\vskip #1}}
  4762. \long\def\multicolumn#1#2#3{\multispan{#1}\begingroup
  4763.   \@mkpream{#2}%
  4764.   \def\@sharp{#3}\set@typeset@protect
  4765.   \let\@startpbox\@@startpbox\let\@endpbox\@@endpbox
  4766.   \@arstrut \@preamble\hbox{}\endgroup\ignorespaces}
  4767. \def\@xexnoop #1\@@{}
  4768. \def\@expast#1{\@xexpast #1*0x\@@}
  4769. \def\@xexpast#1*#2#3#4\@@{%
  4770.   \edef\reserved@a{#1}%
  4771.   \@tempcnta#2\relax
  4772.   \ifnum\@tempcnta>\z@
  4773.     \@whilenum\@tempcnta>\z@\do
  4774.        {\edef\reserved@a{\reserved@a#3}\advance\@tempcnta \m@ne}%
  4775.     \let\reserved@b\@xexpast
  4776.   \else
  4777.     \let\reserved@b\@xexnoop
  4778.   \fi
  4779.   \expandafter\reserved@b\reserved@a #4\@@}
  4780. \newif\if@firstamp
  4781. \def\@addamp{%
  4782.   \if@firstamp
  4783.     \@firstampfalse
  4784.   \else
  4785.     \edef\@preamble{\@preamble &}%
  4786.   \fi}
  4787. \def\@arrayacol{\edef\@preamble{\@preamble \hskip \arraycolsep}}
  4788. \def\@tabacol{\edef\@preamble{\@preamble \hskip \tabcolsep}}
  4789. \def\@ampacol{\@addamp \@acol}
  4790. \def\@acolampacol{\@acol\@addamp\@acol}
  4791. \def\@mkpream#1{\@firstamptrue\@lastchclass6
  4792.   \let\@preamble\@empty
  4793.   \let\protect\@unexpandable@protect
  4794.   \let\@sharp\relax
  4795.   \let\@startpbox\relax\let\@endpbox\relax
  4796.   \@expast{#1}%
  4797.   \expandafter\@tfor \expandafter
  4798.     \@nextchar \expandafter:\expandafter=\reserved@a\do
  4799.        {\@testpach\@nextchar
  4800.     \ifcase \@chclass \@classz \or \@classi \or \@classii \or \@classiii
  4801.       \or \@classiv \or\@classv \fi\@lastchclass\@chclass}%
  4802.   \ifcase \@lastchclass \@acol
  4803.       \or \or \@preamerr \@ne\or \@preamerr \tw@\or \or \@acol \fi}
  4804. \def\@arrayclassz{\ifcase \@lastchclass \@acolampacol \or \@ampacol \or
  4805.    \or \or \@addamp \or
  4806.    \@acolampacol \or \@firstampfalse \@acol \fi
  4807. \edef\@preamble{\@preamble
  4808.   \ifcase \@chnum
  4809.      \hfil$\relax\@sharp$\hfil \or $\relax\@sharp$\hfil
  4810.     \or \hfil$\relax\@sharp$\fi}}
  4811. \def\@tabclassz{%
  4812.   \ifcase\@lastchclass
  4813.     \@acolampacol
  4814.   \or
  4815.     \@ampacol
  4816.   \or
  4817.   \or
  4818.   \or
  4819.     \@addamp
  4820.   \or
  4821.     \@acolampacol
  4822.   \or
  4823.     \@firstampfalse\@acol
  4824.   \fi
  4825.   \edef\@preamble{%
  4826.     \@preamble{%
  4827.       \ifcase\@chnum
  4828.         \hfil\ignorespaces\@sharp\unskip\hfil
  4829.       \or
  4830.         \hskip1sp\ignorespaces\@sharp\unskip\hfil
  4831.       \or
  4832.         \hfil\hskip1sp\ignorespaces\@sharp\unskip
  4833.       \fi}}}
  4834. \def\@classi{%
  4835.   \ifcase\@lastchclass
  4836.     \@acol\@arrayrule
  4837.   \or
  4838.     \@addtopreamble{\hskip \doublerulesep}\@arrayrule
  4839.   \or
  4840.   \or
  4841.   \or
  4842.     \@arrayrule
  4843.   \or
  4844.     \@acol\@arrayrule
  4845.   \or
  4846.     \@arrayrule
  4847.   \fi}
  4848. \def\@classii{%
  4849.   \ifcase\@lastchclass
  4850.   \or
  4851.     \@addtopreamble{\hskip .5\arrayrulewidth}%
  4852.   \fi}
  4853. \def\@classiii{\ifcase \@lastchclass \@acolampacol \or
  4854.    \@addamp\@acol \or
  4855.    \or \or \@addamp \or
  4856.    \@acolampacol \or \@ampacol \fi}
  4857. \def\@tabclassiv{\@addtopreamble\@nextchar}
  4858. \def\@arrayclassiv{\@addtopreamble{$\@nextchar$}}
  4859. \def\@classv{\@addtopreamble{\@startpbox{\@nextchar}\ignorespaces
  4860. \@sharp\@endpbox}}
  4861. \def\@addtopreamble#1{\edef\@preamble{\@preamble #1}}
  4862. \newcount\@chclass
  4863. \newcount\@lastchclass
  4864. \newcount\@chnum
  4865. \newdimen\arraycolsep
  4866. \newdimen\tabcolsep
  4867. \newdimen\arrayrulewidth
  4868. \newdimen\doublerulesep
  4869. \def\arraystretch{1}    % Default value.
  4870. \newbox\@arstrutbox
  4871. \def\@arstrut{%
  4872.   \relax\ifmmode\copy\@arstrutbox\else\unhcopy\@arstrutbox\fi}
  4873. \def\@arrayrule{\@addtopreamble{\hskip -.5\arrayrulewidth
  4874.    \vrule \@width \arrayrulewidth\hskip -.5\arrayrulewidth}}
  4875. \def\@testpach#1{\@chclass \ifnum \@lastchclass=\tw@ 4 \else
  4876.     \ifnum \@lastchclass=3 5 \else
  4877.      \z@ \if #1c\@chnum \z@ \else
  4878.                               \if #1l\@chnum \@ne \else
  4879.                               \if #1r\@chnum \tw@ \else
  4880.           \@chclass \if #1|\@ne \else
  4881.                     \if #1@\tw@ \else
  4882.                     \if #1p3 \else \z@ \@preamerr 0\fi
  4883.   \fi  \fi  \fi  \fi  \fi  \fi
  4884. \def\hline{%
  4885.   \noalign{\ifnum0=`}\fi\hrule \@height \arrayrulewidth \futurelet
  4886.    \reserved@a\@xhline}
  4887. \def\@xhline{\ifx\reserved@a\hline
  4888.                \vskip\doublerulesep
  4889.                \vskip-\arrayrulewidth
  4890.              \fi
  4891.       \ifnum0=`{\fi}}
  4892. \def\vline{\vrule \@width \arrayrulewidth}
  4893. \def\cline#1{\@cline#1\@nil}
  4894. \def\@cline#1-#2\@nil{%
  4895.   \omit
  4896.   \@multicnt#1%
  4897.   \advance\@multispan\m@ne
  4898.   \ifnum\@multicnt=\@ne\@firstofone{&\omit}\fi
  4899.   \@multicnt#2%
  4900.   \advance\@multicnt-#1%
  4901.   \advance\@multispan\@ne
  4902.   \leaders\hrule\@height\arrayrulewidth\hfill
  4903.   \cr
  4904.   \noalign{\vskip-\arrayrulewidth}}
  4905. \def\multispan{\omit\@multispan}
  4906. \def\@multispan#1{%
  4907.   \@multicnt#1\relax
  4908.   \loop\ifnum\@multicnt>\@ne \sp@n\repeat}
  4909. \def\sp@n{\span\omit\advance\@multicnt\m@ne}
  4910. \def\@startpbox#1{\vtop\bgroup \hsize #1\@arrayparboxrestore}
  4911. \def\@endpbox{\@finalstrut\@arstrutbox\par\egroup\hfil}
  4912. \let\@@startpbox=\@startpbox
  4913. \let\@@endpbox=\@endpbox
  4914. %%% From File: ltpictur.dtx
  4915. \expandafter\let\csname ver@autopict.sty\endcsname\fmtversion
  4916. \newdimen\@wholewidth
  4917. \newdimen\@halfwidth
  4918. \newdimen\unitlength \unitlength =1pt
  4919. \newbox\@picbox
  4920. \newdimen\@picht
  4921. \long\gdef\picture#1{\pictur@#1}
  4922. \gdef\pictur@(#1){%
  4923.   \@ifnextchar({\@picture(#1)}{\@picture(#1)(0,0)}}
  4924. \gdef\@picture(#1,#2)(#3,#4){%
  4925.   \@picht#2\unitlength
  4926.   \setbox\@picbox\hb@xt@#1\unitlength\bgroup
  4927.     \hskip -#3\unitlength
  4928.     \lower #4\unitlength\hbox\bgroup
  4929.       \ignorespaces}
  4930. \gdef\endpicture{%
  4931.   \egroup\hss\egroup
  4932.     \ht\@picbox\@picht\dp\@picbox\z@
  4933.     \mbox{\box\@picbox}}
  4934. \long\gdef\put(#1,#2)#3{%
  4935.   \@killglue\raise#2\unitlength
  4936.   \hb@xt@\z@{\kern#1\unitlength #3\hss}%
  4937.   \ignorespaces}
  4938. \gdef\multiput(#1,#2)#3{%
  4939.   \@xdim #1\unitlength
  4940.   \@ydim #2\unitlength
  4941.    \@multiput(}
  4942. \long\gdef\@multiput(#1,#2)#3#4{%
  4943.   \@killglue\@multicnt #3\relax
  4944.   \@whilenum \@multicnt >\z@\do
  4945.     {\raise\@ydim\hb@xt@\z@{\kern\@xdim #4\hss}%
  4946.      \advance\@multicnt\m@ne
  4947.      \advance\@xdim#1\unitlength\advance\@ydim#2\unitlength}%
  4948.   \ignorespaces}
  4949. \gdef\@killglue{\unskip\@whiledim \lastskip >\z@\do{\unskip}}
  4950. \gdef\thinlines{\let\@linefnt\tenln \let\@circlefnt\tencirc
  4951.   \@wholewidth\fontdimen8\tenln \@halfwidth .5\@wholewidth}
  4952. \gdef\thicklines{\let\@linefnt\tenlnw \let\@circlefnt\tencircw
  4953.   \@wholewidth\fontdimen8\tenlnw \@halfwidth .5\@wholewidth}
  4954. \gdef\linethickness#1{\@wholewidth #1\relax \@halfwidth .5\@wholewidth}
  4955. \gdef\shortstack{\@ifnextchar[\@shortstack{\@shortstack[c]}}
  4956. \gdef\@shortstack[#1]{%
  4957.   \leavevmode
  4958.   \vbox\bgroup
  4959.     \baselineskip-\p@\lineskip 3\p@
  4960.     \let\mb@l\hss\let\mb@r\hss
  4961.     \expandafter\let\csname mb@#1\endcsname\relax
  4962.     \let\\\@stackcr
  4963.     \@ishortstack}
  4964. \gdef\@ishortstack#1{\ialign{\mb@l {##}\unskip\mb@r\cr #1\crcr}\egroup}
  4965. \gdef\@stackcr{\@ifstar\@ixstackcr\@ixstackcr}
  4966. \gdef\@ixstackcr{\@ifnextchar[\@istackcr{\cr\ignorespaces}}
  4967. \gdef\@istackcr[#1]{\cr\noalign{\vskip #1}\ignorespaces}
  4968. \newif\if@negarg
  4969. \gdef\line(#1,#2)#3{\@xarg #1\relax \@yarg #2\relax
  4970.   \@linelen #3\unitlength
  4971.   \ifdim\@linelen<\z@\@badlinearg\else
  4972.     \ifnum\@xarg =\z@ \@vline
  4973.       \else \ifnum\@yarg =\z@ \@hline \else \@sline\fi
  4974.     \fi
  4975.   \fi}
  4976. \gdef\@sline{%
  4977.   \ifnum\@xarg<\z@ \@negargtrue \@xarg -\@xarg \@yyarg -\@yarg
  4978.   \else \@negargfalse \@yyarg \@yarg \fi
  4979. \ifnum \@yyarg >\z@ \@tempcnta\@yyarg \else \@tempcnta -\@yyarg \fi
  4980. \ifnum\@tempcnta>6 \@badlinearg\@tempcnta\z@ \fi
  4981. \ifnum\@xarg>6 \@badlinearg\@xarg \@ne \fi
  4982. \setbox\@linechar\hbox{\@linefnt\@getlinechar(\@xarg,\@yyarg)}%
  4983. \ifnum \@yarg >\z@ \let\@upordown\raise \@clnht\z@
  4984.    \else\let\@upordown\lower \@clnht \ht\@linechar\fi
  4985. \@clnwd \wd\@linechar
  4986. \if@negarg
  4987.   \hskip -\wd\@linechar \def\reserved@a{\hskip -2\wd\@linechar}%
  4988. \else
  4989.      \let\reserved@a\relax
  4990. \@whiledim \@clnwd <\@linelen \do
  4991.   {\@upordown\@clnht\copy\@linechar
  4992.    \reserved@a
  4993.    \advance\@clnht \ht\@linechar
  4994.    \advance\@clnwd \wd\@linechar}%
  4995. \advance\@clnht -\ht\@linechar
  4996. \advance\@clnwd -\wd\@linechar
  4997. \@tempdima\@linelen\advance\@tempdima -\@clnwd
  4998. \@tempdimb\@tempdima\advance\@tempdimb -\wd\@linechar
  4999. \if@negarg \hskip -\@tempdimb \else \hskip \@tempdimb \fi
  5000. \multiply\@tempdima \@m
  5001. \@tempcnta \@tempdima
  5002. \@tempdima \wd\@linechar \divide\@tempcnta \@tempdima
  5003. \@tempdima \ht\@linechar \multiply\@tempdima \@tempcnta
  5004. \divide\@tempdima \@m
  5005. \advance\@clnht \@tempdima
  5006. \ifdim \@linelen <\wd\@linechar
  5007.    \hskip \wd\@linechar
  5008.   \else\@upordown\@clnht\copy\@linechar\fi}
  5009. \gdef\@hline{\ifnum \@xarg <\z@ \hskip -\@linelen \fi
  5010. \vrule \@height \@halfwidth \@depth \@halfwidth \@width \@linelen
  5011. \ifnum \@xarg <\z@ \hskip -\@linelen \fi}
  5012. \gdef\@getlinechar(#1,#2){\@tempcnta#1\relax\multiply\@tempcnta 8%
  5013.   \advance\@tempcnta -9\ifnum #2>\z@ \advance\@tempcnta #2\relax\else
  5014.   \advance\@tempcnta -#2\relax\advance\@tempcnta 64 \fi
  5015.   \char\@tempcnta}
  5016. \gdef\vector(#1,#2)#3{\@xarg #1\relax \@yarg #2\relax
  5017.   \@tempcnta \ifnum\@xarg<\z@ -\@xarg\else\@xarg\fi
  5018.   \ifnum\@tempcnta<5\relax
  5019.   \@linelen #3\unitlength
  5020.   \ifdim\@linelen<\z@\@badlinearg\else
  5021.     \ifnum\@xarg =\z@ \@vvector
  5022.       \else \ifnum\@yarg =\z@ \@hvector \else \@svector\fi
  5023.     \fi
  5024.   \fi
  5025.   \else\@badlinearg\fi}
  5026. \gdef\@hvector{\@hline\hb@xt@\z@{\@linefnt
  5027.  \ifnum \@xarg <\z@ \@getlarrow(1,0)\hss\else
  5028.     \hss\@getrarrow(1,0)\fi}}
  5029. \gdef\@vvector{\ifnum \@yarg <\z@ \@downvector \else \@upvector \fi}
  5030. \gdef\@svector{\@sline
  5031.   \@tempcnta\@yarg \ifnum\@tempcnta <\z@ \@tempcnta -\@tempcnta\fi
  5032.   \ifnum\@tempcnta <5%
  5033.     \hskip -\wd\@linechar
  5034.     \@upordown\@clnht \hbox{\@linefnt  \if@negarg
  5035.     \@getlarrow(\@xarg,\@yyarg)\else \@getrarrow(\@xarg,\@yyarg)\fi}%
  5036.   \else\@badlinearg\fi}
  5037. \gdef\@getlarrow(#1,#2){\ifnum #2=\z@ \@tempcnta'33 \else
  5038.   \@tempcnta #1\relax\multiply\@tempcnta \sixt@@n \advance\@tempcnta
  5039.   -9 \@tempcntb #2\relax\multiply\@tempcntb \tw@
  5040.   \ifnum \@tempcntb >\z@ \advance\@tempcnta \@tempcntb
  5041.   \else\advance\@tempcnta -\@tempcntb\advance\@tempcnta 64
  5042.   \fi\fi\char\@tempcnta}
  5043. \gdef\@getrarrow(#1,#2){\@tempcntb #2\relax
  5044. \ifnum\@tempcntb <\z@ \@tempcntb -\@tempcntb\relax\fi
  5045. \ifcase \@tempcntb\relax \@tempcnta'55 \or
  5046. \ifnum #1<\thr@@ \@tempcnta #1\relax\multiply\@tempcnta
  5047. 24\advance\@tempcnta -6 \else \ifnum #1=\thr@@ \@tempcnta 49
  5048. \else\@tempcnta 58 \fi\fi\or
  5049. \ifnum #1<\thr@@ \@tempcnta=#1\relax\multiply\@tempcnta
  5050. 24\advance\@tempcnta -\thr@@ \else \@tempcnta 51 \fi\or
  5051. \@tempcnta #1\relax\multiply\@tempcnta
  5052. \sixt@@n \advance\@tempcnta -\tw@ \else
  5053. \@tempcnta #1\relax\multiply\@tempcnta
  5054. \sixt@@n \advance\@tempcnta 7 \fi\ifnum #2<\z@ \advance\@tempcnta 64 \fi
  5055. \char\@tempcnta}
  5056. \gdef\@vline{\ifnum \@yarg <\z@ \@downline \else \@upline\fi}
  5057. \gdef\@upline{%
  5058.   \hb@xt@\z@{\hskip -\@halfwidth \vrule \@width \@wholewidth
  5059.    \@height \@linelen \@depth \z@\hss}}
  5060. \gdef\@downline{%
  5061.   \hb@xt@\z@{\hskip -\@halfwidth \vrule \@width \@wholewidth
  5062.    \@height \z@ \@depth \@linelen \hss}}
  5063. \gdef\@upvector{\@upline\setbox\@tempboxa\hbox{\@linefnt\char'66}\raise
  5064.      \@linelen \hb@xt@\z@{\lower \ht\@tempboxa\box\@tempboxa\hss}}
  5065. \gdef\@downvector{\@downline\lower \@linelen
  5066.       \hb@xt@\z@{\@linefnt\char'77\hss}}
  5067. \gdef\dashbox#1(#2,#3){\leavevmode\hb@xt@\z@{\baselineskip \z@skip
  5068. \lineskip \z@skip
  5069. \@dashdim #2\unitlength
  5070. \@dashcnt \@dashdim \advance\@dashcnt 200
  5071. \@dashdim #1\unitlength\divide\@dashcnt \@dashdim
  5072. \ifodd\@dashcnt\@dashdim \z@
  5073. \advance\@dashcnt \@ne \divide\@dashcnt \tw@
  5074. \else \divide\@dashdim \tw@ \divide\@dashcnt \tw@
  5075. \advance\@dashcnt \m@ne
  5076. \setbox\@dashbox \hbox{\vrule \@height \@halfwidth \@depth \@halfwidth
  5077. \@width \@dashdim}\put(0,0){\copy\@dashbox}%
  5078. \put(0,#3){\copy\@dashbox}%
  5079. \put(#2,0){\hskip-\@dashdim\copy\@dashbox}%
  5080. \put(#2,#3){\hskip-\@dashdim\box\@dashbox}%
  5081. \multiply\@dashdim \thr@@
  5082. \setbox\@dashbox \hbox{\vrule \@height \@halfwidth \@depth \@halfwidth
  5083. \@width #1\unitlength\hskip #1\unitlength}\@tempcnta\z@
  5084. \put(0,0){\hskip\@dashdim \@whilenum \@tempcnta <\@dashcnt
  5085. \do{\copy\@dashbox\advance\@tempcnta \@ne }}\@tempcnta\z@
  5086. \put(0,#3){\hskip\@dashdim \@whilenum \@tempcnta <\@dashcnt
  5087. \do{\copy\@dashbox\advance\@tempcnta \@ne }}%
  5088. \@dashdim #3\unitlength
  5089. \@dashcnt \@dashdim \advance\@dashcnt 200
  5090. \@dashdim #1\unitlength\divide\@dashcnt \@dashdim
  5091. \ifodd\@dashcnt \@dashdim \z@
  5092. \advance\@dashcnt \@ne \divide\@dashcnt \tw@
  5093. \else
  5094. \divide\@dashdim \tw@ \divide\@dashcnt \tw@
  5095. \advance\@dashcnt \m@ne
  5096. \setbox\@dashbox\hbox{\hskip -\@halfwidth
  5097. \vrule \@width \@wholewidth
  5098. \@height \@dashdim}\put(0,0){\copy\@dashbox}%
  5099. \put(#2,0){\copy\@dashbox}%
  5100. \put(0,#3){\lower\@dashdim\copy\@dashbox}%
  5101. \put(#2,#3){\lower\@dashdim\copy\@dashbox}%
  5102. \multiply\@dashdim \thr@@
  5103. \setbox\@dashbox\hbox{\vrule \@width \@wholewidth
  5104. \@height #1\unitlength}\@tempcnta\z@
  5105. \put(0,0){\hskip -\@halfwidth \vbox{\@whilenum \@tempcnta <\@dashcnt
  5106. \do{\vskip #1\unitlength\copy\@dashbox\advance\@tempcnta \@ne }%
  5107. \vskip\@dashdim}}\@tempcnta\z@
  5108. \put(#2,0){\hskip -\@halfwidth \vbox{\@whilenum \@tempcnta<\@dashcnt
  5109. \do{\vskip #1\unitlength\copy\@dashbox\advance\@tempcnta \@ne }%
  5110. \vskip\@dashdim}}}\@makepicbox(#2,#3)}
  5111. \newif\if@ovt
  5112. \newif\if@ovb
  5113. \newif\if@ovl
  5114. \newif\if@ovr
  5115. \newdimen\@ovxx
  5116. \newdimen\@ovyy
  5117. \newdimen\@ovdx
  5118. \newdimen\@ovdy
  5119. \newdimen\@ovro
  5120. \newdimen\@ovri
  5121. \gdef\@getcirc#1{\@tempdima #1\relax \advance\@tempdima 2\p@
  5122.   \@tempcnta\@tempdima
  5123.   \@tempdima 4\p@ \divide\@tempcnta\@tempdima
  5124.   \ifnum \@tempcnta >10\relax \@tempcnta 10\relax\fi
  5125.   \ifnum \@tempcnta >\z@ \advance\@tempcnta\m@ne
  5126.     \else \@latex@warning{Oval too small}\fi
  5127.   \multiply\@tempcnta 4\relax
  5128.   \setbox \@tempboxa \hbox{\@circlefnt
  5129.   \char \@tempcnta}\@tempdima \wd \@tempboxa}
  5130. \gdef\@put#1#2#3{\raise #2\hb@xt@\z@{\hskip #1#3\hss}}
  5131. \gdef\oval(#1,#2){\@ifnextchar[{\@oval(#1,#2)}{\@oval(#1,#2)[]}}
  5132. \gdef\@oval(#1,#2)[#3]{\begingroup\boxmaxdepth \maxdimen
  5133.   \@ovttrue \@ovbtrue \@ovltrue \@ovrtrue
  5134.   \@tfor\reserved@a :=#3\do{\csname @ov\reserved@a false\endcsname}%
  5135.   \@ovxx
  5136.   #1\unitlength \@ovyy #2\unitlength
  5137.   \@tempdimb \ifdim \@ovyy >\@ovxx \@ovxx\else \@ovyy \fi
  5138.   \advance \@tempdimb -2\p@
  5139.   \@getcirc \@tempdimb
  5140.   \@ovro \ht\@tempboxa \@ovri \dp\@tempboxa
  5141.   \@ovdx\@ovxx \advance\@ovdx -\@tempdima \divide\@ovdx \tw@
  5142.   \@ovdy\@ovyy \advance\@ovdy -\@tempdima \divide\@ovdy \tw@
  5143.   \@circlefnt \setbox\@tempboxa
  5144.   \hbox{\if@ovr \@ovvert32\kern -\@tempdima \fi
  5145.   \if@ovl \kern \@ovxx \@ovvert01\kern -\@tempdima \kern -\@ovxx \fi
  5146.   \if@ovt \@ovhorz \kern -\@ovxx \fi
  5147.   \if@ovb \raise \@ovyy \@ovhorz \fi}\advance\@ovdx\@ovro
  5148.   \advance\@ovdy\@ovro \ht\@tempboxa\z@ \dp\@tempboxa\z@
  5149.   \@put{-\@ovdx}{-\@ovdy}{\box\@tempboxa}%
  5150.   \endgroup}
  5151. \gdef\@ovvert#1#2{\vbox to\@ovyy{%
  5152.     \if@ovb \@tempcntb \@tempcnta \advance \@tempcntb #1\relax
  5153.       \kern -\@ovro \hbox{\char \@tempcntb}\nointerlineskip
  5154.     \else \kern \@ovri \kern \@ovdy \fi
  5155.     \leaders\vrule \@width \@wholewidth\vfil \nointerlineskip
  5156.     \if@ovt \@tempcntb \@tempcnta \advance \@tempcntb #2\relax
  5157.       \hbox{\char \@tempcntb}%
  5158.     \else \kern \@ovdy \kern \@ovro \fi}}
  5159. \gdef\@ovhorz{\hb@xt@\@ovxx{\kern \@ovro
  5160.     \if@ovr \else \kern \@ovdx \fi
  5161.     \leaders \hrule \@height \@wholewidth \hfil
  5162.     \if@ovl \else \kern \@ovdx \fi
  5163.     \kern \@ovri}}
  5164. \gdef\circle{\@inmatherr\circle\@ifstar\@dot\@circle}
  5165. \gdef\@circle#1{%
  5166.   \begingroup \boxmaxdepth \maxdimen \@tempdimb #1\unitlength
  5167.    \ifdim \@tempdimb >15.5\p@ \@getcirc\@tempdimb
  5168.       \@ovro\ht\@tempboxa
  5169.      \setbox\@tempboxa\hbox{\@circlefnt
  5170.       \advance\@tempcnta\tw@ \char \@tempcnta
  5171.       \advance\@tempcnta\m@ne \char \@tempcnta \kern -2\@tempdima
  5172.       \advance\@tempcnta\tw@
  5173.       \raise \@tempdima \hbox{\char\@tempcnta}\raise \@tempdima
  5174.         \box\@tempboxa}\ht\@tempboxa\z@ \dp\@tempboxa\z@
  5175.       \@put{-\@ovro}{-\@ovro}{\box\@tempboxa}%
  5176.    \else  \@circ\@tempdimb{96}\fi\endgroup}
  5177. \gdef\@dot#1{\@tempdimb #1\unitlength \@circ\@tempdimb{112}}
  5178. \gdef\@circ#1#2{\@tempdima #1\relax \advance\@tempdima .5\p@
  5179.    \@tempcnta\@tempdima \@tempdima \p@
  5180.    \divide\@tempcnta\@tempdima
  5181.    \ifnum\@tempcnta >15\relax \@tempcnta 15\relax \fi
  5182.    \ifnum \@tempcnta >\z@ \advance\@tempcnta\m@ne\fi
  5183.    \advance\@tempcnta #2\relax
  5184.    \@circlefnt \char\@tempcnta}
  5185. \newcount\@xarg
  5186. \newcount\@yarg
  5187. \newcount\@yyarg
  5188. \newcount\@multicnt
  5189. \newdimen\@xdim
  5190. \newdimen\@ydim
  5191. \newbox\@linechar
  5192. \newdimen\@linelen
  5193. \newdimen\@clnwd
  5194. \newdimen\@clnht
  5195. \newdimen\@dashdim
  5196. \newbox\@dashbox
  5197. \newcount\@dashcnt
  5198. \let\@linefnt\tenln
  5199. \let\@circlefnt\tencirc
  5200. \@wholewidth\fontdimen8\tenln
  5201. \@halfwidth .5\@wholewidth
  5202. \gdef\qbeziermax{500}
  5203. \newcommand\qbezier[2][0]{\bezier{#1}#2}
  5204. \gdef\bezier#1)#2(#3)#4({\@bezier#1)(#3)(}
  5205. \gdef\@bezier#1(#2,#3)(#4,#5)(#6,#7){%
  5206.   \ifnum #1=\z@
  5207.       \@ovxx #4\unitlength
  5208.         \advance\@ovxx -#2\unitlength
  5209.         \ifdim \@ovxx<\z@ \@ovxx -\@ovxx \fi
  5210.       \@ovdx #6\unitlength
  5211.         \advance\@ovdx -#4\unitlength
  5212.         \ifdim \@ovdx<\z@ \@ovdx -\@ovdx \fi
  5213.         \ifdim \@ovxx<\@ovdx \@ovxx \@ovdx \fi
  5214.       \@ovyy #5\unitlength
  5215.         \advance\@ovyy -#3\unitlength
  5216.         \ifdim \@ovyy<\z@ \@ovyy -\@ovyy \fi
  5217.       \@ovdy #7\unitlength
  5218.         \advance\@ovdy -#5\unitlength
  5219.         \ifdim \@ovdy<\z@  \@ovdy -\@ovdy \fi
  5220.         \ifdim \@ovyy<\@ovdy \@ovyy  \@ovdy \fi
  5221.       \@multicnt
  5222.          \ifdim \@ovxx>\@ovyy \@ovxx \else \@ovyy \fi
  5223.       \@ovxx .5\@halfwidth \divide\@multicnt\@ovxx
  5224.       \ifnum \qbeziermax<\@multicnt \@multicnt\qbeziermax\relax \fi
  5225.   \else \@multicnt#1\relax \fi
  5226.   \@tempcnta\@multicnt \advance\@tempcnta\@ne
  5227.   \@ovdx #4\unitlength \advance\@ovdx -#2\unitlength
  5228.       \multiply\@ovdx \tw@
  5229.   \@ovxx #6\unitlength \advance\@ovxx -#2\unitlength
  5230.       \advance\@ovxx -\@ovdx \divide\@ovxx\@multicnt
  5231.   \@ovdy #5\unitlength \advance\@ovdy -#3\unitlength
  5232.        \multiply\@ovdy \tw@
  5233.   \@ovyy #7\unitlength \advance\@ovyy -#3\unitlength
  5234.       \advance\@ovyy -\@ovdy \divide\@ovyy\@multicnt
  5235.   \setbox\@tempboxa\hbox{\vrule \@height\@halfwidth
  5236.                                \@depth \@halfwidth
  5237.                                \@width \@wholewidth}%
  5238.    \put(#2,#3){%
  5239.      \count@\z@
  5240.      \@whilenum{\count@<\@tempcnta}\do
  5241.         {\@xdim\count@\@ovxx
  5242.            \advance\@xdim\@ovdx
  5243.            \divide\@xdim\@multicnt
  5244.            \multiply\@xdim\count@
  5245.          \@ydim\count@\@ovyy
  5246.             \advance\@ydim\@ovdy
  5247.             \divide\@ydim\@multicnt
  5248.             \multiply\@ydim\count@
  5249.          \raise \@ydim
  5250.             \hb@xt@\z@{\kern\@xdim
  5251.                         \unhcopy\@tempboxa\hss}%
  5252.          \advance\count@\@ne}}}
  5253. %%% From File: ltthm.dtx
  5254. \def\newtheorem#1{%
  5255.   \@ifnextchar[{\@othm{#1}}{\@nthm{#1}}}
  5256. \def\@nthm#1#2{%
  5257.   \@ifnextchar[{\@xnthm{#1}{#2}}{\@ynthm{#1}{#2}}}
  5258. \def\@xnthm#1#2[#3]{%
  5259.   \expandafter\@ifdefinable\csname #1\endcsname
  5260.     {\@definecounter{#1}\@newctr{#1}[#3]%
  5261.      \expandafter\xdef\csname the#1\endcsname{%
  5262.        \expandafter\noexpand\csname the#3\endcsname \@thmcountersep
  5263.           \@thmcounter{#1}}%
  5264.      \global\@namedef{#1}{\@thm{#1}{#2}}%
  5265.      \global\@namedef{end#1}{\@endtheorem}}}
  5266. \def\@ynthm#1#2{%
  5267.   \expandafter\@ifdefinable\csname #1\endcsname
  5268.     {\@definecounter{#1}%
  5269.      \expandafter\xdef\csname the#1\endcsname{\@thmcounter{#1}}%
  5270.      \global\@namedef{#1}{\@thm{#1}{#2}}%
  5271.      \global\@namedef{end#1}{\@endtheorem}}}
  5272. \def\@othm#1[#2]#3{%
  5273.   \@ifundefined{c@#2}{\@nocounterr{#2}}%
  5274.     {\expandafter\@ifdefinable\csname #1\endcsname
  5275.     {\global\@namedef{the#1}{\@nameuse{the#2}}%
  5276.   \global\@namedef{#1}{\@thm{#2}{#3}}%
  5277.   \global\@namedef{end#1}{\@endtheorem}}}}
  5278. \def\@thm#1#2{%
  5279.   \refstepcounter{#1}%
  5280.   \@ifnextchar[{\@ythm{#1}{#2}}{\@xthm{#1}{#2}}}
  5281. \def\@xthm#1#2{%
  5282.   \@begintheorem{#2}{\csname the#1\endcsname}\ignorespaces}
  5283. \def\@ythm#1#2[#3]{%
  5284.   \@opargbegintheorem{#2}{\csname the#1\endcsname}{#3}\ignorespaces}
  5285. \def\@thmcounter#1{\noexpand\arabic{#1}}
  5286. \def\@thmcountersep{.}
  5287. \def\@begintheorem#1#2{\trivlist
  5288.    \item[\hskip \labelsep{\bfseries #1\ #2}]\itshape}
  5289. \def\@opargbegintheorem#1#2#3{\trivlist
  5290.       \item[\hskip \labelsep{\bfseries #1\ #2\ (#3)}]\itshape}
  5291. \def\@endtheorem{\endtrivlist}
  5292. %%% From File: ltsect.dtx
  5293. \message{title,}
  5294. \def\title#1{\gdef\@title{#1}}
  5295. \def\@title{\@latex@error{No \noexpand\title given}\@ehc}
  5296. \def\author#1{\gdef\@author{#1}}
  5297. \def\@author{\@latex@warning@no@line{No \noexpand\author given}}
  5298. \def\date#1{\gdef\@date{#1}}
  5299. \gdef\@date{\today}
  5300. \def\thanks#1{\footnotemark
  5301.     \protected@xdef\@thanks{\@thanks
  5302.         \protect\footnotetext[\the\c@footnote]{#1}}%
  5303. \let\@thanks\@empty
  5304. \def\and{%                  % \begin{tabular}
  5305.   \end{tabular}%
  5306.   \hskip 1em \@plus.17fil%
  5307.   \begin{tabular}[t]{c}}%   % \end{tabular}
  5308. \message{sectioning,}
  5309. \newcount\@secpenalty
  5310. \@secpenalty = -300
  5311. \newif\if@noskipsec \@noskipsectrue
  5312. \def\@startsection#1#2#3#4#5#6{%
  5313.   \if@noskipsec \leavevmode \fi
  5314.   \par
  5315.   \@tempskipa #4\relax
  5316.   \@afterindenttrue
  5317.   \ifdim \@tempskipa <\z@
  5318.     \@tempskipa -\@tempskipa \@afterindentfalse
  5319.   \fi
  5320.   \if@nobreak
  5321.     \everypar{}%
  5322.   \else
  5323.     \addpenalty\@secpenalty\addvspace\@tempskipa
  5324.   \fi
  5325.   \@ifstar
  5326.     {\@ssect{#3}{#4}{#5}{#6}}%
  5327.     {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
  5328. \def\@sect#1#2#3#4#5#6[#7]#8{%
  5329.   \ifnum #2>\c@secnumdepth
  5330.     \let\@svsec\@empty
  5331.   \else
  5332.     \refstepcounter{#1}%
  5333.     \protected@edef\@svsec{\@seccntformat{#1}\relax}%
  5334.   \fi
  5335.   \@tempskipa #5\relax
  5336.   \ifdim \@tempskipa>\z@
  5337.     \begingroup
  5338.       #6{%
  5339.         \@hangfrom{\hskip #3\relax\@svsec}%
  5340.           \interlinepenalty \@M #8\@@par}%
  5341.     \endgroup
  5342.     \csname #1mark\endcsname{#7}%
  5343.     \addcontentsline{toc}{#1}{%
  5344.       \ifnum #2>\c@secnumdepth \else
  5345.         \protect\numberline{\csname the#1\endcsname}%
  5346.       \fi
  5347.       #7}%
  5348.   \else
  5349.     \def\@svsechd{%
  5350.       #6{\hskip #3\relax
  5351.       \@svsec #8}%
  5352.       \csname #1mark\endcsname{#7}%
  5353.       \addcontentsline{toc}{#1}{%
  5354.         \ifnum #2>\c@secnumdepth \else
  5355.           \protect\numberline{\csname the#1\endcsname}%
  5356.         \fi
  5357.         #7}}%
  5358.   \fi
  5359.   \@xsect{#5}}
  5360. \def\@xsect#1{%
  5361.   \@tempskipa #1\relax
  5362.   \ifdim \@tempskipa>\z@
  5363.     \par \nobreak
  5364.     \vskip \@tempskipa
  5365.     \@afterheading
  5366.   \else
  5367.     \@nobreakfalse
  5368.     \global\@noskipsectrue
  5369.     \everypar{%
  5370.       \if@noskipsec
  5371.         \global\@noskipsecfalse
  5372.        {\setbox\z@\lastbox}%
  5373.         \clubpenalty\@M
  5374.         \begingroup \@svsechd \endgroup
  5375.         \unskip
  5376.         \@tempskipa #1\relax
  5377.         \hskip -\@tempskipa
  5378.       \else
  5379.         \clubpenalty \@clubpenalty
  5380.         \everypar{}%
  5381.       \fi}%
  5382.   \fi
  5383.   \ignorespaces}
  5384. \def\@seccntformat#1{\csname the#1\endcsname\quad}
  5385. \def\@ssect#1#2#3#4#5{%
  5386.   \@tempskipa #3\relax
  5387.   \ifdim \@tempskipa>\z@
  5388.     \begingroup
  5389.       #4{%
  5390.         \@hangfrom{\hskip #1}%
  5391.           \interlinepenalty \@M #5\@@par}%
  5392.     \endgroup
  5393.   \else
  5394.     \def\@svsechd{#4{\hskip #1\relax #5}}%
  5395.   \fi
  5396.   \@xsect{#3}}
  5397. \newif\if@afterindent \@afterindenttrue
  5398. \def\@afterheading{%
  5399.   \@nobreaktrue
  5400.   \everypar{%
  5401.     \if@nobreak
  5402.       \@nobreakfalse
  5403.       \clubpenalty \@M
  5404.       \if@afterindent \else
  5405.         {\setbox\z@\lastbox}%
  5406.       \fi
  5407.     \else
  5408.       \clubpenalty \@clubpenalty
  5409.       \everypar{}%
  5410.     \fi}}
  5411. \def\@hangfrom#1{\setbox\@tempboxa\hbox{{#1}}%
  5412.       \hangindent \wd\@tempboxa\noindent\box\@tempboxa}
  5413. \newcount\c@secnumdepth
  5414. \newcount\c@tocdepth
  5415. \def\secdef#1#2{\@ifstar{#2}{\@dblarg{#1}}}
  5416. \let\sectionmark\@gobble
  5417. \let\subsectionmark\@gobble
  5418. \let\subsubsectionmark\@gobble
  5419. \let\paragraphmark\@gobble
  5420. \let\subparagraphmark\@gobble
  5421. \message{contents,}
  5422. \def\@starttoc#1{%
  5423.   \begingroup
  5424.     \makeatletter
  5425.     \@input{\jobname.#1}%
  5426.     \if@filesw
  5427.       \expandafter\newwrite\csname tf@#1\endcsname
  5428.       \immediate\openout \csname tf@#1\endcsname \jobname.#1\relax
  5429.     \fi
  5430.     \@nobreakfalse
  5431.   \endgroup}
  5432. \def\addcontentsline#1#2#3{%
  5433.   \addtocontents{#1}{\protect\contentsline{#2}{#3}{\thepage}}}
  5434. \long\def\addtocontents#1#2{%
  5435.   \protected@write\@auxout
  5436.       {\let\label\@gobble \let\index\@gobble \let\glossary\@gobble}%
  5437.       {\string\@writefile{#1}{#2}}}
  5438. \def\contentsline#1{\csname l@#1\endcsname}
  5439. \def\@dottedtocline#1#2#3#4#5{%
  5440.   \ifnum #1>\c@tocdepth \else
  5441.     \vskip \z@ \@plus.2\p@
  5442.     {\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip
  5443.      \parindent #2\relax\@afterindenttrue
  5444.      \interlinepenalty\@M
  5445.      \leavevmode
  5446.      \@tempdima #3\relax
  5447.      \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
  5448.      {#4}\nobreak
  5449.      \leaders\hbox{$\m@th
  5450.         \mkern \@dotsep mu\hbox{.}\mkern \@dotsep
  5451.         mu$}\hfill
  5452.      \nobreak
  5453.      \hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor #5}%
  5454.      \par}%
  5455.   \fi}
  5456. \def\numberline#1{\hb@xt@\@tempdima{#1\hfil}}
  5457. %%% From File: ltfloat.dtx
  5458. \message{floats,}
  5459. \newcount\@floatpenalty
  5460. \def\caption{\refstepcounter\@captype \@dblarg{\@caption\@captype}}
  5461. \long\def\@caption#1[#2]#3{%
  5462.   \par
  5463.   \addcontentsline{\csname ext@#1\endcsname}{#1}%
  5464.     {\protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}}%
  5465.   \begingroup
  5466.     \@parboxrestore
  5467.     \if@minipage
  5468.       \@setminipage
  5469.     \fi
  5470.     \normalsize
  5471.     \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
  5472.   \endgroup}
  5473. \def\@float#1{%
  5474.   \@ifnextchar[%
  5475.     {\@xfloat{#1}}%
  5476.     {\edef\reserved@a{\noexpand\@xfloat{#1}[\csname fps@#1\endcsname]}%
  5477.      \reserved@a}}
  5478. \def\@dblfloat{%
  5479.   \if@twocolumn\let\reserved@a\@dbflt\else\let\reserved@a\@float\fi
  5480.   \reserved@a}
  5481. \def\@xfloat #1[#2]{%
  5482.   \@nodocument
  5483.   \def \@captype {#1}%
  5484.    \def \@fps {#2}%
  5485.    \@onelevel@sanitize \@fps
  5486.    \def \reserved@b {!}%
  5487.    \ifx \reserved@b \@fps
  5488.      \@fpsadddefault
  5489.    \else
  5490.      \ifx \@fps \@empty
  5491.        \@fpsadddefault
  5492.      \fi
  5493.    \fi
  5494.    \ifhmode
  5495.      \@bsphack
  5496.      \@floatpenalty -\@Mii
  5497.    \else
  5498.      \@floatpenalty-\@Miii
  5499.    \fi
  5500.   \ifinner
  5501.      \@parmoderr\@floatpenalty\z@
  5502.   \else
  5503.     \@next\@currbox\@freelist
  5504.       {%
  5505.        \@tempcnta \sixt@@n
  5506.        \expandafter \@tfor \expandafter \reserved@a
  5507.          \expandafter :\expandafter =\@fps
  5508.          \do
  5509.           {%
  5510.            \if \reserved@a h%
  5511.              \ifodd \@tempcnta
  5512.              \else
  5513.                \advance \@tempcnta \@ne
  5514.              \fi
  5515.            \fi
  5516.            \if \reserved@a t%
  5517.              \@setfpsbit \tw@
  5518.            \fi
  5519.            \if \reserved@a b%
  5520.              \@setfpsbit 4%
  5521.            \fi
  5522.            \if \reserved@a p%
  5523.              \@setfpsbit 8%
  5524.            \fi
  5525.            \if \reserved@a !%
  5526.              \ifnum \@tempcnta>15
  5527.                \advance\@tempcnta -\sixt@@n\relax
  5528.              \fi
  5529.            \fi
  5530.            }%
  5531.        \@tempcntb \csname ftype@\@captype \endcsname
  5532.        \multiply \@tempcntb \@xxxii
  5533.        \advance \@tempcnta \@tempcntb
  5534.        \global \count\@currbox \@tempcnta
  5535.        }%
  5536.     \@fltovf
  5537.   \fi
  5538.   \global \setbox\@currbox
  5539.     \color@vbox
  5540.       \normalcolor
  5541.       \vbox \bgroup
  5542.         \hsize\columnwidth
  5543.         \@parboxrestore
  5544.         \@floatboxreset
  5545. \def \@floatboxreset {%
  5546.         \reset@font
  5547.         \normalsize
  5548.         \@setminipage
  5549. \def \@setnobreak{%
  5550.   \if@nobreak
  5551.     \let\outer@nobreak\@nobreaktrue
  5552.     \@nobreakfalse
  5553.   \fi
  5554. \def \@setminipage{%
  5555.   \@minipagetrue
  5556.   \everypar{\@minipagefalse\everypar{}}%
  5557. \def\end@float{%
  5558.   \@endfloatbox
  5559.   \ifnum\@floatpenalty <\z@
  5560.     \@largefloatcheck
  5561.     \@cons\@currlist\@currbox
  5562.     \ifnum\@floatpenalty <-\@Mii
  5563.       \penalty -\@Miv
  5564.       \@tempdima\prevdepth
  5565.       \vbox{}%
  5566.       \prevdepth\@tempdima
  5567.       \penalty\@floatpenalty
  5568.     \else
  5569.       \vadjust{\penalty -\@Miv \vbox{}\penalty\@floatpenalty}\@Esphack
  5570.     \fi
  5571.   \fi
  5572. \def\end@dblfloat{%
  5573. \if@twocolumn
  5574.   \@endfloatbox
  5575.   \ifnum\@floatpenalty <\z@
  5576.     \@largefloatcheck
  5577.     \@cons\@dbldeferlist\@currbox
  5578.   \fi
  5579.     \ifnum \@floatpenalty =-\@Mii \@Esphack\fi
  5580. \else
  5581.   \end@float
  5582. \def \@endfloatbox{%
  5583.       \par\vskip\z@skip      %% \par\vskip\z@ added 15 Dec 87
  5584.       \@minipagefalse
  5585.       \outer@nobreak
  5586.     \egroup                  %% end of vbox
  5587.   \color@endbox
  5588. \let\outer@nobreak\@empty
  5589. \def \@largefloatcheck{%
  5590.   \ifdim \ht\@currbox>\textheight
  5591.     \@tempdima -\textheight
  5592.     \advance \@tempdima \ht\@currbox
  5593.     \@latex@warning {Float too large for page by \the\@tempdima}%
  5594.     \ht\@currbox \textheight
  5595.   \fi
  5596. \def\@dbflt#1{\@ifnextchar[{\@xdblfloat{#1}}{\@xdblfloat{#1}[tp]}}
  5597. \def\@xdblfloat#1[#2]{%
  5598.   \@xfloat{#1}[#2]\hsize\textwidth\linewidth\textwidth}
  5599. \def\@floatplacement{\global\@topnum\c@topnumber
  5600.     % Textpage bit, global:
  5601.    \global\@toproom \topfraction\@colht
  5602.    \global\@botnum  \c@bottomnumber
  5603.    \global\@botroom \bottomfraction\@colht
  5604.    \global\@colnum  \c@totalnumber
  5605.     % Floatpage bit, local:
  5606.    \@fpmin   \floatpagefraction\@colht}
  5607. \def \@dblfloatplacement {%
  5608.   \global \@dbltopnum \c@dbltopnumber
  5609.   \global \@dbltoproom \dbltopfraction\@colht
  5610.   \@textmin \@colht
  5611.   \advance \@textmin -\@dbltoproom
  5612.   \@fpmin \dblfloatpagefraction\textheight
  5613.   \@fptop \@dblfptop
  5614.   \@fpsep \@dblfpsep
  5615.   \@fpbot \@dblfpbot
  5616. \def\marginpar{%
  5617.   \ifhmode
  5618.     \@bsphack
  5619.     \@floatpenalty -\@Mii
  5620.   \else
  5621.     \@floatpenalty-\@Miii
  5622.   \fi
  5623.   \ifinner
  5624.     \@parmoderr
  5625.     \@floatpenalty\z@
  5626.   \else
  5627.     \@next\@currbox\@freelist{}{}%
  5628.     \@next\@marbox\@freelist{\global\count\@marbox\m@ne}%
  5629.        {\@floatpenalty\z@
  5630.         \@fltovf\def\@currbox{\@tempboxa}\def\@marbox{\@tempboxa}}%
  5631.   \fi
  5632.   \@ifnextchar [\@xmpar\@ympar}
  5633. \long\def\@xmpar[#1]#2{%
  5634.   \@savemarbox\@marbox{#1}%
  5635.   \@savemarbox\@currbox{#2}%
  5636.   \@xympar}
  5637. \long\def\@ympar#1{%
  5638.   \@savemarbox\@marbox{#1}%
  5639.   \global\setbox\@currbox\copy\@marbox
  5640.   \@xympar}
  5641. \long\def \@savemarbox #1#2{%
  5642.   \global\setbox #1%
  5643.     \color@vbox
  5644.       \vtop{%
  5645.         \hsize\marginparwidth
  5646.         \@parboxrestore
  5647.         \@marginparreset
  5648.         #2%
  5649.         \@minipagefalse
  5650.         \outer@nobreak
  5651.         }%
  5652.     \color@endbox
  5653. \def \@marginparreset {%
  5654.         \reset@font
  5655.         \normalsize
  5656.         \@setminipage
  5657. \def \@xympar{%
  5658.   \ifnum\@floatpenalty <\z@\@cons\@currlist\@marbox\fi
  5659.   \setbox\@tempboxa
  5660.     \color@vbox
  5661.       \vbox \bgroup
  5662.   \end@float
  5663.   \@ignorefalse
  5664.   \@esphack
  5665. \def\reversemarginpar{\global\@mparbottom\z@ \@reversemargintrue}
  5666. \def\normalmarginpar{\global\@mparbottom\z@ \@reversemarginfalse}
  5667. \message{footnotes,}
  5668. \newinsert\footins
  5669. \skip\footins=\bigskipamount % space added when footnote is present
  5670. \count\footins=1000 % footnote magnification factor (1 to 1)
  5671. \dimen\footins=8in % maximum footnotes per page
  5672. \def\footnoterule{\kern-3\p@
  5673.   \hrule \@width 2in \kern 2.6\p@} % the \hrule is .4pt high
  5674. \@definecounter{footnote}
  5675. \def\thefootnote{\@arabic\c@footnote}
  5676. \@definecounter{mpfootnote}
  5677. \def\thempfootnote{\itshape\@alph\c@mpfootnote}
  5678. \def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}
  5679. \DeclareRobustCommand*\textsuperscript[1]{%
  5680.   \@textsuperscript{\selectfont#1}}
  5681. \def\@textsuperscript#1{%
  5682.   {\m@th\ensuremath{^{\mbox{\fontsize\sf@size\z@#1}}}}}
  5683. \newdimen\footnotesep
  5684. \def\footnote{\@ifnextchar[\@xfootnote{\stepcounter\@mpfn
  5685.      \protected@xdef\@thefnmark{\thempfn}%
  5686.      \@footnotemark\@footnotetext}}
  5687. \def\@xfootnote[#1]{%
  5688.    \begingroup
  5689.      \csname c@\@mpfn\endcsname #1\relax
  5690.      \unrestored@protected@xdef\@thefnmark{\thempfn}%
  5691.    \endgroup
  5692.    \@footnotemark\@footnotetext}
  5693. \long\def\@footnotetext#1{\insert\footins{%
  5694.     \reset@font\footnotesize
  5695.     \interlinepenalty\interfootnotelinepenalty
  5696.     \splittopskip\footnotesep
  5697.     \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
  5698.     \hsize\columnwidth \@parboxrestore
  5699.     \protected@edef\@currentlabel{%
  5700.        \csname p@footnote\endcsname\@thefnmark
  5701.     }%
  5702.     \color@begingroup
  5703.       \@makefntext{%
  5704.         \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}
  5705.     \color@endgroup}}
  5706. \def\footnotemark{%
  5707.    \@ifnextchar[\@xfootnotemark
  5708.      {\stepcounter{footnote}%
  5709.       \protected@xdef\@thefnmark{\thefootnote}%
  5710.       \@footnotemark}}
  5711. \def\@xfootnotemark[#1]{%
  5712.    \begingroup
  5713.       \c@footnote #1\relax
  5714.       \unrestored@protected@xdef\@thefnmark{\thefootnote}%
  5715.    \endgroup
  5716.    \@footnotemark}
  5717. \def\@footnotemark{%
  5718.   \leavevmode
  5719.   \ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi
  5720.   \@makefnmark
  5721.   \ifhmode\spacefactor\@x@sf\fi
  5722.   \relax}
  5723. \def\footnotetext{%
  5724.      \@ifnextchar [\@xfootnotenext
  5725.        {\protected@xdef\@thefnmark{\thempfn}%
  5726.     \@footnotetext}}
  5727. \def\@xfootnotenext[#1]{%
  5728.   \begingroup
  5729.      \csname c@\@mpfn\endcsname #1\relax
  5730.      \unrestored@protected@xdef\@thefnmark{\thempfn}%
  5731.   \endgroup
  5732.   \@footnotetext}
  5733. \def\@mpfn{footnote}
  5734. \def\thempfn{\thefootnote}
  5735. %%% From File: ltidxglo.dtx
  5736. \message{index,}
  5737. \def\makeindex{%
  5738.   \newwrite\@indexfile
  5739.   \immediate\openout\@indexfile=\jobname.idx
  5740.   \def\index{\@bsphack\begingroup
  5741.              \@sanitize
  5742.              \@wrindex}\typeout
  5743.     {Writing index file \jobname.idx}%
  5744.   \let\makeindex\@empty
  5745. \@onlypreamble\makeindex
  5746. \def\@wrindex#1{%
  5747.    \protected@write\@indexfile{}%
  5748.       {\string\indexentry{#1}{\thepage}}%
  5749.  \endgroup
  5750.  \@esphack}
  5751. \def\index{\@bsphack\begingroup \@sanitize\@index}
  5752. \def\@index#1{\endgroup\@esphack}
  5753. \def\makeglossary{%
  5754.   \newwrite\@glossaryfile
  5755.   \immediate\openout\@glossaryfile=\jobname.glo
  5756.   \def\glossary{\@bsphack\begingroup
  5757.                 \@sanitize
  5758.                 \@wrglossary}\typeout
  5759.     {Writing glossary file \jobname.glo }%
  5760.   \let\makeglossary\@empty
  5761. \@onlypreamble\makeglossary
  5762. \def\@wrglossary#1{%
  5763.    \protected@write\@glossaryfile{}%
  5764.       {\string\glossaryentry{#1}{\thepage}}%
  5765.  \endgroup
  5766.  \@esphack}
  5767. \def\glossary{\@bsphack\begingroup\@sanitize\@index}
  5768. %%% From File: ltbibl.dtx
  5769. \message{bibliography,}
  5770. \def\bibitem{\@ifnextchar[\@lbibitem\@bibitem}
  5771. \def\@lbibitem[#1]#2{\item[\@biblabel{#1}\hfill]\if@filesw
  5772.       {\let\protect\noexpand
  5773.        \immediate
  5774.        \write\@auxout{\string\bibcite{#2}{#1}}}\fi\ignorespaces}
  5775. \def\@bibitem#1{\item\if@filesw \immediate\write\@auxout
  5776.        {\string\bibcite{#1}{\the\value{\@listctr}}}\fi\ignorespaces}
  5777. \def\bibcite{\@newl@bel b}
  5778. \let\citation\@gobble
  5779. \DeclareRobustCommand\cite{%
  5780.   \@ifnextchar [{\@tempswatrue\@citex}{\@tempswafalse\@citex[]}}
  5781. \def\@citex[#1]#2{%
  5782.   \let\@citea\@empty
  5783.   \@cite{\@for\@citeb:=#2\do
  5784.     {\@citea\def\@citea{,\penalty\@m\ }%
  5785.      \edef\@citeb{\expandafter\@firstofone\@citeb}%
  5786.      \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi
  5787.      \@ifundefined{b@\@citeb}{\mbox{\reset@font\bfseries ?}%
  5788.        \G@refundefinedtrue
  5789.        \@latex@warning
  5790.          {Citation `\@citeb' on page \thepage \space undefined}}%
  5791.        {\hbox{\csname b@\@citeb\endcsname}}}}{#1}}
  5792. \let\bibdata=\@gobble
  5793. \let\bibstyle=\@gobble
  5794. \def\bibliography#1{%
  5795.   \if@filesw
  5796.     \immediate\write\@auxout{\string\bibdata{#1}}%
  5797.   \fi
  5798.   \@input@{\jobname.bbl}}
  5799. \def\bibliographystyle#1{%
  5800.   \ifx\@begindocumenthook\@undefined\else
  5801.     \expandafter\AtBeginDocument
  5802.   \fi
  5803.     {\if@filesw
  5804.        \immediate\write\@auxout{\string\bibstyle{#1}}%
  5805.      \fi}}
  5806. \def\nocite#1{\@bsphack
  5807.   \@for\@citeb:=#1\do{%
  5808.     \edef\@citeb{\expandafter\@firstofone\@citeb}%
  5809.     \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi
  5810.     \@ifundefined{b@\@citeb}{\G@refundefinedtrue
  5811.         \@latex@warning{Citation `\@citeb' undefined}}{}}%
  5812.   \@esphack}
  5813. \expandafter\let\csname b@*\endcsname\@empty
  5814. \def\@cite#1#2{[{#1\if@tempswa , #2\fi}]}
  5815. \def\@biblabel#1{[#1]}
  5816. %%% From File: ltpage.dtx
  5817. \def\pagestyle#1{%
  5818.   \@ifundefined{ps@#1}%
  5819.     \undefinedpagestyle
  5820.     {\@nameuse{ps@#1}}}
  5821. \def\thispagestyle#1{%
  5822.   \@ifundefined{ps@#1}%
  5823.     \undefinedpagestyle
  5824.     {\global\@specialpagetrue\gdef\@specialstyle{#1}}}
  5825. \def\ps@empty{%
  5826.   \let\@mkboth\@gobbletwo\let\@oddhead\@empty\let\@oddfoot\@empty
  5827.   \let\@evenhead\@empty\let\@evenfoot\@empty}
  5828. \def\ps@plain{\let\@mkboth\@gobbletwo
  5829.      \let\@oddhead\@empty\def\@oddfoot{\reset@font\hfil\thepage
  5830.      \hfil}\let\@evenhead\@empty\let\@evenfoot\@oddfoot}
  5831. \let\@leftmark\@firstoftwo
  5832. \let\@rightmark\@secondoftwo
  5833. \def\markboth#1#2{\gdef\@themark{{#1}{#2}}{%
  5834.      \let\protect\@unexpandable@protect
  5835.      \let\label\relax \let\index\relax \let\glossary\relax
  5836.      \mark{\@themark}}\if@nobreak\ifvmode\nobreak\fi\fi}
  5837. \def\markright#1{{\let\protect\@unexpandable@protect
  5838.      \let\label\relax \let\index\relax \let\glossary\relax
  5839.      \expandafter\@markright\@themark
  5840.      {#1}\mark{\@themark}}\if@nobreak\ifvmode\nobreak\fi\fi}
  5841. \def\@markright#1#2#3{\gdef\@themark{{#1}{#3}}}
  5842. \def\leftmark{\expandafter\@leftmark\botmark{}{}}
  5843. \def\rightmark{\expandafter\@rightmark\firstmark{}{}}
  5844. \def\@themark{{}{}}
  5845. \def\raggedbottom{%
  5846.   \def\@textbottom{\vskip \z@ \@plus.0001fil}\let\@texttop\relax}
  5847. \def\flushbottom{%
  5848.   \let\@textbottom\relax \let\@texttop\relax}
  5849. \def\sloppy{%
  5850.   \tolerance 9999%
  5851.   \emergencystretch 3em%
  5852.   \hfuzz .5\p@
  5853.   \vfuzz\hfuzz}
  5854. \def\sloppypar{\par\sloppy}
  5855. \def\endsloppypar{\par}
  5856. \def\fussy{%
  5857.   \emergencystretch\z@
  5858.   \tolerance 200%
  5859.   \hfuzz .1\p@
  5860.   \vfuzz\hfuzz}
  5861. \overfullrule 0pt
  5862. %%% From File: ltoutput.dtx
  5863. \expandafter\let\csname ver@autoout1.sty\endcsname\fmtversion
  5864. \message{output,}
  5865. \maxdeadcycles = 100
  5866. \let\@elt\relax
  5867. \def\@next#1#2#3#4{\ifx#2\@empty #4\else
  5868.    \expandafter\@xnext #2\@@#1#2#3\fi}
  5869. \def\@xnext \@elt #1#2\@@#3#4{\def#3{#1}\gdef#4{#2}}
  5870. \def\@testfalse{\global\let\if@test\iffalse}
  5871. \def\@testtrue {\global\let\if@test\iftrue}
  5872. \@testfalse
  5873. \def\@bitor#1#2{\@testfalse {\let\@elt\@xbitor
  5874.    \@tempcnta #1\relax #2}}
  5875. \def\@xbitor #1{\@tempcntb \count#1
  5876.    \ifnum \@tempcnta =\z@
  5877.    \else
  5878.      \divide\@tempcntb\@tempcnta
  5879.      \ifodd\@tempcntb \@testtrue\fi
  5880.    \fi}
  5881. \newinsert\bx@A
  5882. \newinsert\bx@B
  5883. \newinsert\bx@C
  5884. \newinsert\bx@D
  5885. \newinsert\bx@E
  5886. \newinsert\bx@F
  5887. \newinsert\bx@G
  5888. \newinsert\bx@H
  5889. \newinsert\bx@I
  5890. \newinsert\bx@J
  5891. \newinsert\bx@K
  5892. \newinsert\bx@L
  5893. \newinsert\bx@M
  5894. \newinsert\bx@N
  5895. \newinsert\bx@O
  5896. \newinsert\bx@P
  5897. \newinsert\bx@Q
  5898. \newinsert\bx@R
  5899. \gdef\@freelist{\@elt\bx@A\@elt\bx@B\@elt\bx@C\@elt\bx@D\@elt\bx@E
  5900.                \@elt\bx@F\@elt\bx@G\@elt\bx@H\@elt\bx@I\@elt\bx@J
  5901.                 \@elt\bx@K\@elt\bx@L\@elt\bx@M\@elt\bx@N
  5902.                 \@elt\bx@O\@elt\bx@P\@elt\bx@Q\@elt\bx@R}
  5903. \gdef\@toplist{}
  5904. \gdef\@botlist{}
  5905. \gdef\@midlist{}
  5906. \gdef\@currlist{}
  5907. \gdef\@deferlist{}
  5908. \gdef\@dbltoplist{}
  5909. \gdef\@dbldeferlist{}
  5910. \newdimen\topmargin
  5911. \newdimen\oddsidemargin
  5912. \newdimen\evensidemargin
  5913. \let\@themargin=\oddsidemargin
  5914. \newdimen\headheight
  5915. \newdimen\headsep
  5916. \newdimen\footskip
  5917. \newdimen\textheight
  5918. \newdimen\textwidth
  5919. \newdimen\columnwidth
  5920. \newdimen\columnsep
  5921. \newdimen\columnseprule
  5922. \newdimen\marginparwidth
  5923. \newdimen\marginparsep
  5924. \newdimen\marginparpush
  5925. \newbox\@begindvibox
  5926. \def \AtBeginDvi #1{%
  5927.   \global \setbox \@begindvibox
  5928.     \vbox{\unvbox \@begindvibox #1}%
  5929. \newdimen\@maxdepth
  5930. \@maxdepth = \maxdepth
  5931. \newdimen\paperheight
  5932. \newdimen\paperwidth
  5933. \newif \if@insert
  5934. \newif \if@fcolmade
  5935. \newif \if@specialpage \@specialpagefalse
  5936. \newif \if@firstcolumn \@firstcolumntrue
  5937. \newif \if@twocolumn   \@twocolumnfalse
  5938. \newif \if@twoside     \@twosidefalse
  5939. \newif \if@reversemargin \@reversemarginfalse
  5940. \newif \if@mparswitch  \@mparswitchfalse
  5941. \newcount \col@number
  5942. \col@number \@ne
  5943. \newcount\@topnum
  5944. \newdimen\@toproom
  5945. \newcount\@dbltopnum
  5946. \newdimen\@dbltoproom
  5947. \newcount\@botnum
  5948. \newdimen\@botroom
  5949. \newcount\@colnum
  5950. \newdimen\@textmin
  5951. \newdimen\@fpmin
  5952. \newdimen\@colht
  5953. \newdimen\@colroom
  5954. \newdimen\@pageht
  5955. \newdimen\@pagedp
  5956. \newdimen\@mparbottom \@mparbottom\z@
  5957. \newcount\@currtype
  5958. \newbox\@outputbox
  5959. \newbox\@leftcolumn
  5960. \newbox\@holdpg
  5961. \def\@thehead{\@oddhead} % initialization
  5962. \def\@thefoot{\@oddfoot}
  5963. \def\clearpage{%
  5964.   \ifvmode
  5965.     \ifnum \@dbltopnum =\m@ne
  5966.       \ifdim \pagetotal <\topskip
  5967.         \hbox{}%
  5968.       \fi
  5969.     \fi
  5970.   \fi
  5971.   \newpage
  5972.   \write\m@ne{}%
  5973.   \vbox{}%
  5974.   \penalty -\@Mi
  5975. \def\cleardoublepage{\clearpage\if@twoside \ifodd\c@page\else
  5976.     \hbox{}\newpage\if@twocolumn\hbox{}\newpage\fi\fi\fi}
  5977. \def\onecolumn{%
  5978.   \clearpage
  5979.   \global\columnwidth\textwidth
  5980.   \global\hsize\columnwidth
  5981.   \global\linewidth\columnwidth
  5982.   \global\@twocolumnfalse
  5983.   \col@number \@ne
  5984.   \@floatplacement}
  5985. \def \newpage {%
  5986.   \if@noskipsec
  5987.     \ifx \@nodocument\relax
  5988.       \leavevmode
  5989.       \global \@noskipsecfalse
  5990.     \fi
  5991.   \fi
  5992.   \if@inlabel
  5993.     \leavevmode
  5994.     \global \@inlabelfalse
  5995.   \fi
  5996.   \if@nobreak \@nobreakfalse \everypar{}\fi
  5997.   \par
  5998.   \vfil
  5999.   \penalty -\@M}
  6000. \def \@emptycol {\vbox{}\penalty -\@M}
  6001. \def \twocolumn {%
  6002.   \clearpage
  6003.   \global\columnwidth\textwidth
  6004.   \global\advance\columnwidth-\columnsep
  6005.   \global\divide\columnwidth\tw@
  6006.   \global\hsize\columnwidth
  6007.   \global\linewidth\columnwidth
  6008.   \global\@twocolumntrue
  6009.   \global\@firstcolumntrue
  6010.   \col@number \tw@
  6011.   \@ifnextchar [\@topnewpage\@floatplacement
  6012. \long\def \@topnewpage [#1]{%
  6013.   \@nodocument
  6014.   \@next\@currbox\@freelist{}{}%
  6015.   \global \setbox\@currbox
  6016.     \color@vbox
  6017.       \normalcolor
  6018.       \vbox {%
  6019.         \hsize\textwidth
  6020.         \@parboxrestore
  6021.         \col@number \@ne
  6022.         #1%
  6023.         \vskip -\dbltextfloatsep
  6024.              }%
  6025.     \color@endbox
  6026.   \ifdim \ht\@currbox>\textheight
  6027.     \ht\@currbox \textheight
  6028.   \fi
  6029.   \global \count\@currbox \tw@
  6030.   \@tempdima -\ht\@currbox
  6031.   \advance \@tempdima -\dbltextfloatsep
  6032.   \global \advance \@colht \@tempdima
  6033.   \ifx \@dbltoplist \@empty
  6034.   \else
  6035.     \@latexerr{Float(s) lost}\@ehb
  6036.     \let \@dbltoplist \@empty
  6037.   \fi
  6038.   \@cons \@dbltoplist \@currbox
  6039.   \global \@dbltopnum \m@ne
  6040.   \ifdim \@colht<2.5\baselineskip
  6041.     \@latex@warning@no@line {Optional argument of \noexpand\twocolumn
  6042.                 too tall on page \thepage}%
  6043.     \@emptycol
  6044.     \if@firstcolumn
  6045.     \else
  6046.       \@emptycol
  6047.     \fi
  6048.   \else
  6049.     \global \vsize \@colht
  6050.     \global \@colroom \@colht
  6051.     \@floatplacement
  6052.   \fi
  6053. \output {%
  6054.   \let \par \@@par
  6055.   \ifnum \outputpenalty<-\@M
  6056.     \@specialoutput
  6057.   \else
  6058.     \@makecol
  6059.     \@opcol
  6060.     \@startcolumn
  6061.     \@whilesw \if@fcolmade \fi
  6062.       {%
  6063.        \@opcol\@startcolumn}%
  6064.   \fi
  6065.   \ifnum \outputpenalty>-\@Miv
  6066.     \ifdim \@colroom<1.5\baselineskip
  6067.       \ifdim \@colroom<\textheight
  6068.         \@latex@warning@no@line {Text page \thepage\space
  6069.                                contains only floats}%
  6070.         \@emptycol
  6071.         \if@twocolumn
  6072.           \if@firstcolumn
  6073.           \else
  6074.             \@emptycol
  6075.           \fi
  6076.         \fi
  6077.       \else
  6078.         \global \vsize \@colroom
  6079.       \fi
  6080.     \else
  6081.       \global \vsize \@colroom
  6082.     \fi
  6083.   \else
  6084.     \global \vsize \maxdimen
  6085.   \fi
  6086. \gdef\@specialoutput{%
  6087.    \ifnum \outputpenalty>-\@Mii
  6088.      \@doclearpage
  6089.    \else
  6090.      \ifnum \outputpenalty<-\@Miii
  6091.        \ifnum \outputpenalty<-\@MM \deadcycles \z@ \fi
  6092.        \global \setbox\@holdpg \vbox {\unvbox\@cclv}%
  6093.      \else
  6094.        \global \setbox\@holdpg \vbox{%
  6095.                       \unvbox\@holdpg
  6096.                       \unvbox\@cclv
  6097.                       \setbox\@tempboxa \lastbox
  6098.                       \unskip
  6099.                                      }%
  6100.        \@pagedp \dp\@holdpg
  6101.        \@pageht \ht\@holdpg
  6102.        \unvbox \@holdpg
  6103.        \@next\@currbox\@currlist{%
  6104.          \ifnum \count\@currbox>\z@
  6105.            \advance \@pageht \@pagedp
  6106.            \ifvoid\footins \else
  6107.              \advance \@pageht \ht\footins
  6108.              \advance \@pageht \skip\footins
  6109.              \advance \@pageht \dp\footins
  6110.            \fi
  6111.            \ifvbox \@kludgeins
  6112.              \ifdim \wd\@kludgeins=\z@
  6113.                \advance \@pageht \ht\@kludgeins
  6114.              \fi
  6115.            \fi
  6116.            \@reinserts
  6117.            \@addtocurcol
  6118.          \else
  6119.            \@reinserts
  6120.            \@addmarginpar
  6121.          \fi
  6122.          }\@latexbug
  6123.        \ifnum \outputpenalty<\z@
  6124.          \if@nobreak
  6125.            \nobreak
  6126.          \else
  6127.            \addpenalty \interlinepenalty
  6128.          \fi
  6129.        \fi
  6130.      \fi
  6131.    \fi
  6132. \def \@doclearpage {%
  6133.      \ifvoid\footins
  6134.        \setbox\@tempboxa\vsplit\@cclv to\z@ \unvbox\@tempboxa
  6135.        \setbox\@tempboxa\box\@cclv
  6136.        \xdef\@deferlist{\@toplist\@botlist\@deferlist}%
  6137.        \global \let \@toplist \@empty
  6138.        \global \let \@botlist \@empty
  6139.        \global \@colroom \@colht
  6140.        \ifx \@currlist\@empty
  6141.        \else
  6142.           \@latexerr{Float(s) lost}\@ehb
  6143.           \global \let \@currlist \@empty
  6144.        \fi
  6145.        \@makefcolumn\@deferlist
  6146.        \@whilesw\if@fcolmade \fi{\@opcol\@makefcolumn\@deferlist}%
  6147.        \if@twocolumn
  6148.          \if@firstcolumn
  6149.            \xdef\@dbldeferlist{\@dbltoplist\@dbldeferlist}%
  6150.            \global \let \@dbltoplist \@empty
  6151.            \global \@colht \textheight
  6152.            \begingroup
  6153.               \@dblfloatplacement
  6154.               \@makefcolumn\@dbldeferlist
  6155.               \@whilesw\if@fcolmade \fi{\@outputpage
  6156.                                         \@makefcolumn\@dbldeferlist}%
  6157.            \endgroup
  6158.          \else
  6159.            \vbox{}\clearpage
  6160.          \fi
  6161.        \fi
  6162.      \else
  6163.        \setbox\@cclv\vbox{\box\@cclv\vfil}%
  6164.        \@makecol\@opcol
  6165.        \clearpage
  6166.      \fi
  6167. \def \@opcol {%
  6168.   \if@twocolumn
  6169.     \@outputdblcol
  6170.   \else
  6171.     \@outputpage
  6172.   \fi
  6173.   \global \@mparbottom \z@ \global \@textfloatsheight \z@
  6174.   \@floatplacement
  6175. \gdef \@makecol {%
  6176.    \ifvoid\footins
  6177.      \setbox\@outputbox \box\@cclv
  6178.    \else
  6179.      \setbox\@outputbox \vbox {%
  6180.        \boxmaxdepth \@maxdepth
  6181.        \unvbox \@cclv
  6182.        \vskip \skip\footins
  6183.        \color@begingroup
  6184.          \normalcolor
  6185.          \footnoterule
  6186.          \unvbox \footins
  6187.        \color@endgroup
  6188.        }%
  6189.    \fi
  6190.    \xdef\@freelist{\@freelist\@midlist}%
  6191.    \global \let \@midlist \@empty
  6192.    \@combinefloats
  6193.    \ifvbox\@kludgeins
  6194.      \@makespecialcolbox
  6195.    \else
  6196.      \setbox\@outputbox \vbox to\@colht {%
  6197.        \@texttop
  6198.        \dimen@ \dp\@outputbox
  6199.        \unvbox \@outputbox
  6200.        \vskip -\dimen@
  6201.        \@textbottom
  6202.        }%
  6203.    \fi
  6204.    \global \maxdepth \@maxdepth
  6205. \gdef \@reinserts{%
  6206.   \ifvoid\footins\else\insert\footins{\unvbox\footins}\fi
  6207.   \ifvbox\@kludgeins\insert\@kludgeins
  6208.                       {\unvbox\@kludgeins}\fi
  6209. \gdef \@makespecialcolbox {%
  6210.    \setbox\@outputbox \vbox {%
  6211.      \@texttop
  6212.      \dimen@ \dp\@outputbox
  6213.      \unvbox\@outputbox
  6214.      \vskip-\dimen@
  6215.      }%
  6216.    \@tempdima \@colht
  6217.    \ifdim \wd\@kludgeins>\z@
  6218.      \advance \@tempdima -\ht\@outputbox
  6219.      \advance \@tempdima \pageshrink
  6220.      \setbox\@outputbox \vbox to \@colht {%
  6221.        \unvbox\@outputbox
  6222.        \vskip \@tempdima
  6223.        \@textbottom
  6224.        }%
  6225.    \else
  6226.      \advance \@tempdima -\ht\@kludgeins
  6227.      \setbox \@outputbox \vbox to \@colht {%
  6228.        \vbox to \@tempdima {%
  6229.          \unvbox\@outputbox
  6230.          \@textbottom}%
  6231.        \vss}%
  6232.    \fi
  6233.    {\setbox \@tempboxa \box \@kludgeins}%
  6234. \let \@texttop \relax
  6235. \let \@textbottom \relax
  6236. \def\@activechar@info #1{%
  6237.       \@latex@info@no@line {Active #1 character found while
  6238.                             output routine is active
  6239.                             \MessageBreak
  6240.                             This may be a bug in a package file
  6241.                             you are using}%
  6242. \begingroup
  6243. \obeylines\obeyspaces%
  6244. \gdef\@resetactivechars{%
  6245. \def^^M{\@activechar@info{EOL}\space}%
  6246. \def {\@activechar@info{space}\space}}%
  6247. \endgroup
  6248. \def\@outputpage{%
  6249. \begingroup           % the \endgroup is put in by \aftergroup
  6250.   \let \protect \noexpand
  6251.   \@resetactivechars
  6252.   \@parboxrestore
  6253.   \shipout \vbox{%
  6254.     \set@typeset@protect
  6255.     \aftergroup \endgroup
  6256.     \aftergroup \set@typeset@protect
  6257.                                 % correct? or just restore by ending
  6258.                                 % the group?
  6259.   \if@specialpage
  6260.     \global\@specialpagefalse\@nameuse{ps@\@specialstyle}%
  6261.   \fi
  6262.   \if@twoside
  6263.     \ifodd\count\z@ \let\@thehead\@oddhead \let\@thefoot\@oddfoot
  6264.          \let\@themargin\oddsidemargin
  6265.     \else \let\@thehead\@evenhead
  6266.        \let\@thefoot\@evenfoot \let\@themargin\evensidemargin
  6267.     \fi
  6268.   \fi
  6269.   \reset@font
  6270.   \normalsize
  6271.   \baselineskip\z@skip \lineskip\z@skip \lineskiplimit\z@
  6272.     \@begindvi
  6273.     \vskip \topmargin
  6274.     \moveright\@themargin \vbox {%
  6275.       \setbox\@tempboxa \vbox to\headheight{%
  6276.         \vfil
  6277.         \color@hbox
  6278.           \normalcolor
  6279.           \hb@xt@\textwidth {%
  6280.             \let \label \@gobble
  6281.             \let \index \@gobble
  6282.             \let \glossary \@gobble %% 21 Jun 91
  6283.             \@thehead
  6284.             }%
  6285.         \color@endbox
  6286.         }%                        %% 22 Feb 87
  6287.       \dp\@tempboxa \z@
  6288.       \box\@tempboxa
  6289.       \vskip \headsep
  6290.       \box\@outputbox
  6291.       \baselineskip \footskip
  6292.       \color@hbox
  6293.         \normalcolor
  6294.         \hb@xt@\textwidth{%
  6295.           \let \label \@gobble
  6296.           \let \index \@gobble      %% 22 Feb 87
  6297.           \let \glossary \@gobble   %% 21 Jun 91
  6298.           \@thefoot
  6299.           }%
  6300.       \color@endbox
  6301.       }%
  6302.     }%
  6303. \global \@colht \textheight
  6304. \stepcounter{page}%
  6305. \let\firstmark\botmark
  6306. \def \@begindvi{%
  6307.   \unvbox \@begindvibox
  6308.   \global\let \@begindvi \@empty
  6309. \def \@combinefloats {%
  6310.     \ifx \@toplist\@empty \else \@cflt \fi
  6311.     \ifx \@botlist\@empty \else \@cflb \fi
  6312. \def \@cflt{%
  6313.     \let \@elt \@comflelt
  6314.     \setbox\@tempboxa \vbox{}%
  6315.     \@toplist
  6316.     \setbox\@outputbox \vbox{%
  6317.                              \boxmaxdepth \maxdepth
  6318.                              \unvbox\@tempboxa
  6319.                              \vskip -\floatsep
  6320.                              \topfigrule
  6321.                              \vskip \textfloatsep
  6322.                              \unvbox\@outputbox
  6323.                              }%
  6324.     \let\@elt\relax
  6325.     \xdef\@freelist{\@freelist\@toplist}%
  6326.     \global\let\@toplist\@empty
  6327. \def \@cflb {%
  6328.     \let\@elt\@comflelt
  6329.     \setbox\@tempboxa \vbox{}%
  6330.     \@botlist
  6331.     \setbox\@outputbox \vbox{%
  6332.                              \unvbox\@outputbox
  6333.                              \vskip \textfloatsep
  6334.                              \botfigrule
  6335.                              \unvbox\@tempboxa
  6336.                              \vskip -\floatsep
  6337.                              }%
  6338.     \let\@elt\relax
  6339.     \xdef\@freelist{\@freelist\@botlist}%
  6340.     \global \let \@botlist\@empty
  6341. \def\@comflelt#1{\setbox\@tempboxa
  6342.       \vbox{\unvbox\@tempboxa\box #1\vskip\floatsep}}
  6343. \def\@comdblflelt#1{\setbox\@tempboxa
  6344.       \vbox{\unvbox\@tempboxa\box #1\vskip\dblfloatsep}}
  6345. \def \@combinedblfloats{%
  6346.   \ifx \@dbltoplist \@empty
  6347.   \else
  6348.     \setbox\@tempboxa \vbox{}%
  6349.     \let \@elt \@comdblflelt
  6350.     \@dbltoplist
  6351.     \let \@elt \relax
  6352.     \xdef \@freelist {\@freelist\@dbltoplist}%
  6353.     \global\let \@dbltoplist \@empty
  6354.     \setbox\@outputbox \vbox to\textheight
  6355.       {%\boxmaxdepth\maxdepth   %% probably not needed, CAR
  6356.        \unvbox\@tempboxa\vskip-\dblfloatsep
  6357.        \ifnum \@dbltopnum>\m@ne
  6358.          \dblfigrule
  6359.        \fi
  6360.        \vskip \dbltextfloatsep
  6361.        \box\@outputbox
  6362.        }%
  6363.   \fi
  6364. \def \@startcolumn {%
  6365.   \global \@colroom \@colht
  6366.   \@tryfcolumn \@deferlist
  6367.   \if@fcolmade
  6368.   \else
  6369.     \begingroup
  6370.       \let \reserved@b \@deferlist
  6371.       \global \let \@deferlist \@empty
  6372.       \let \@elt \@scolelt
  6373.       \reserved@b
  6374.     \endgroup
  6375.   \fi
  6376. \def \@startdblcolumn {%
  6377.   \@tryfcolumn \@dbldeferlist
  6378.   \if@fcolmade
  6379.   \else
  6380.     \begingroup
  6381.       \let \reserved@b \@dbldeferlist
  6382.       \global \let \@dbldeferlist \@empty
  6383.       \let \@elt \@sdblcolelt
  6384.       \reserved@b
  6385.     \endgroup
  6386.   \fi
  6387. \def \@tryfcolumn #1{%
  6388.   \global \@fcolmadefalse
  6389.   \ifx #1\@empty
  6390.   \else
  6391.     \xdef\@trylist{#1}%
  6392.     \global \let \@failedlist \@empty
  6393.     \begingroup
  6394.       \let \@elt \@xtryfc \@trylist
  6395.     \endgroup
  6396.     \if@fcolmade
  6397.       \@vtryfc #1%
  6398.     \fi
  6399.   \fi
  6400. \def\@scolelt#1{\def\@currbox{#1}\@addtonextcol}
  6401. \def\@sdblcolelt#1{\def\@currbox{#1}\@addtodblcol}
  6402. \def\@vtryfc #1{\global\setbox\@outputbox\vbox{}\let\@elt\@wtryfc
  6403.        \@flsucceed \global\setbox\@outputbox
  6404.        \vbox to\@colht{\vskip \@fptop
  6405.        \vskip -\@fpsep \unvbox \@outputbox
  6406.        \vskip \@fpbot}\let\@elt\relax
  6407.        \xdef #1{\@failedlist\@flfail}%
  6408.        \xdef\@freelist{\@freelist\@flsucceed}}
  6409. \def\@wtryfc #1{\global\setbox\@outputbox\vbox{\unvbox\@outputbox
  6410.     \vskip\@fpsep\box #1}}
  6411. \def\@xtryfc #1{\@next\reserved@a\@trylist{}{}\@currtype
  6412.   \count #1\divide\@currtype\@xxxii \multiply\@currtype\@xxxii
  6413.   \@bitor \@currtype \@failedlist \@testfp #1\ifdim
  6414.     \ht #1>\@colht \@testtrue\fi
  6415.     \if@test \@cons\@failedlist #1\else \@ytryfc #1\fi}
  6416. \def\@ytryfc #1{\begingroup \gdef\@flsucceed{\@elt #1}%
  6417.   \global\let\@flfail\@empty
  6418.   \@tempdima\ht #1\let\@elt\@ztryfc \@trylist
  6419.   \ifdim \@tempdima >\@fpmin
  6420.      \global\@fcolmadetrue \else \@cons\@failedlist #1\fi
  6421.   \endgroup \if@fcolmade \let\@elt\@gobble \fi}
  6422. \def\@ztryfc #1{\@tempcnta\count #1\divide\@tempcnta\@xxxii
  6423.     \multiply\@tempcnta\@xxxii \@bitor \@tempcnta {\@failedlist
  6424.     \@flfail}\@testfp #1\@tempdimb\@tempdima
  6425.     \advance\@tempdimb\ht #1\advance
  6426.     \@tempdimb\@fpsep \ifdim \@tempdimb >\@colht \@testtrue\fi
  6427.     \if@test \@cons\@flfail #1\else
  6428.       \@cons\@flsucceed #1\@tempdima\@tempdimb
  6429.     \fi}
  6430. \def \@addtobot {%
  6431.    \@getfpsbit 4\relax
  6432.    \ifodd \@tempcnta
  6433.      \@flsetnum \@botnum
  6434.      \ifnum \@botnum>\z@
  6435.        \@tempswafalse
  6436.        \@flcheckspace \@botroom \@botlist
  6437.        \if@tempswa
  6438.          \global \maxdepth \z@
  6439.          \@flupdates \@botnum \@botroom \@botlist
  6440.          \@inserttrue
  6441.        \fi
  6442.      \fi
  6443.    \fi
  6444. \def \@addtotoporbot {%
  6445.    \@getfpsbit \tw@
  6446.    \ifodd \@tempcnta
  6447.      \@flsetnum \@topnum
  6448.      \ifnum \@topnum>\z@
  6449.        \@tempswafalse
  6450.        \@flcheckspace \@toproom \@toplist
  6451.        \if@tempswa
  6452.          \@bitor\@currtype{\@midlist\@botlist}%
  6453.          \if@test
  6454.          \else
  6455.           \@flupdates \@topnum \@toproom \@toplist
  6456.           \@inserttrue
  6457.          \fi
  6458.        \fi
  6459.      \fi
  6460.    \fi
  6461.    \if@insert
  6462.    \else
  6463.      \@addtobot
  6464.    \fi
  6465. \def \@addtocurcol {%
  6466.    \@insertfalse
  6467.    \@setfloattypecounts
  6468.    \ifnum \@fpstype=8
  6469.    \else
  6470.      \ifnum \@fpstype=24
  6471.      \else
  6472.        \@flsettextmin
  6473.        \advance \@textmin \@textfloatsheight
  6474.        \@reqcolroom \@pageht
  6475.        \ifdim \@textmin>\@reqcolroom
  6476.          \@reqcolroom \@textmin
  6477.        \fi
  6478.        \advance \@reqcolroom \ht\@currbox
  6479.        \ifdim \@colroom>\@reqcolroom
  6480.          \@flsetnum \@colnum
  6481.          \ifnum \@colnum>\z@
  6482.            \@bitor\@currtype\@deferlist
  6483.            \if@test
  6484.            \else
  6485.              \@bitor\@currtype\@botlist
  6486.              \if@test
  6487.                \@addtobot
  6488.              \else
  6489.                \ifodd \count\@currbox
  6490.                  \advance \@reqcolroom \intextsep
  6491.                  \ifdim \@colroom>\@reqcolroom
  6492.                    \global \advance \@colnum \m@ne
  6493.                    \global \advance \@textfloatsheight \ht\@currbox
  6494.                    \global \advance \@textfloatsheight 2\intextsep
  6495.                    \@cons \@midlist \@currbox
  6496.                    \if@nobreak
  6497.                      \nobreak
  6498.                      \@nobreakfalse
  6499.                      \everypar{}%
  6500.                    \else
  6501.                      \addpenalty \interlinepenalty
  6502.                    \fi
  6503.                    \vskip \intextsep
  6504.                    \box\@currbox
  6505.                    \penalty\interlinepenalty
  6506.                    \vskip\intextsep
  6507.                    \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi
  6508.                    \outputpenalty \z@
  6509.                    \@inserttrue
  6510.                  \fi
  6511.                \fi
  6512.                \if@insert
  6513.                \else
  6514.                  \@addtotoporbot
  6515.                \fi
  6516.              \fi
  6517.            \fi
  6518.          \fi
  6519.        \fi
  6520.      \fi
  6521.    \fi
  6522.    \if@insert
  6523.    \else
  6524.      \@resethfps
  6525.      \@cons\@deferlist\@currbox
  6526.    \fi
  6527. \def\@addtonextcol{%
  6528.   \begingroup
  6529.    \@insertfalse
  6530.    \@setfloattypecounts
  6531.    \ifnum \@fpstype=8
  6532.    \else
  6533.      \ifnum \@fpstype=24
  6534.      \else
  6535.        \@flsettextmin
  6536.        \@reqcolroom \ht\@currbox
  6537.        \advance \@reqcolroom \@textmin
  6538.        \ifdim \@colroom>\@reqcolroom
  6539.          \@flsetnum \@colnum
  6540.          \ifnum\@colnum>\z@
  6541.             \@bitor\@currtype\@deferlist
  6542.             \if@test
  6543.             \else
  6544.               \@addtotoporbot
  6545.             \fi
  6546.          \fi
  6547.        \fi
  6548.      \fi
  6549.    \fi
  6550.    \if@insert
  6551.    \else
  6552.      \@cons\@deferlist\@currbox
  6553.    \fi
  6554.   \endgroup
  6555. \def\@addtodblcol{%
  6556.   \begingroup
  6557.    \@insertfalse
  6558.    \@setfloattypecounts
  6559.    \@getfpsbit \tw@
  6560.    \ifodd\@tempcnta
  6561.      \@flsetnum \@dbltopnum
  6562.      \ifnum \@dbltopnum>\z@
  6563.        \@tempswafalse
  6564.        \ifdim \@dbltoproom>\ht\@currbox
  6565.          \@tempswatrue
  6566.        \else
  6567.          \ifnum \@fpstype<\sixt@@n
  6568.            \advance \@dbltoproom \@textmin
  6569.            \ifdim \@dbltoproom>\ht\@currbox
  6570.              \@tempswatrue
  6571.            \fi
  6572.            \advance \@dbltoproom -\@textmin
  6573.          \fi
  6574.        \fi
  6575.        \if@tempswa
  6576.            \@bitor \@currtype \@dbldeferlist
  6577.            \if@test
  6578.            \else
  6579.               \@tempdima -\ht\@currbox
  6580.               \advance\@tempdima
  6581.                 -\ifx \@dbltoplist\@empty \dbltextfloatsep \else
  6582.                                           \dblfloatsep \fi
  6583.               \global \advance \@dbltoproom \@tempdima
  6584.               \global \advance \@colht \@tempdima
  6585.               \global \advance \@dbltopnum \m@ne
  6586.               \@cons \@dbltoplist \@currbox
  6587.               \@inserttrue
  6588.            \fi
  6589.        \fi
  6590.      \fi
  6591.    \fi
  6592.    \if@insert
  6593.    \else
  6594.      \@cons\@dbldeferlist\@currbox
  6595.    \fi
  6596.   \endgroup
  6597. \def\@addmarginpar{\@next\@marbox\@currlist{\@cons\@freelist\@marbox
  6598.     \@cons\@freelist\@currbox}\@latexbug\@tempcnta\@ne
  6599.     \if@twocolumn
  6600.         \if@firstcolumn \@tempcnta\m@ne \fi
  6601.     \else
  6602.       \if@mparswitch
  6603.          \ifodd\c@page \else\@tempcnta\m@ne \fi
  6604.       \fi
  6605.       \if@reversemargin \@tempcnta -\@tempcnta \fi
  6606.     \fi
  6607.     \ifnum\@tempcnta <\z@  \global\setbox\@marbox\box\@currbox \fi
  6608.     \@tempdima\@mparbottom
  6609.     \advance\@tempdima -\@pageht
  6610.     \advance\@tempdima\ht\@marbox
  6611.     \ifdim\@tempdima >\z@
  6612.       \@latex@warning@no@line {Marginpar on page \thepage\space moved}%
  6613.     \else
  6614.       \@tempdima\z@
  6615.     \fi
  6616.     \global\@mparbottom\@pageht
  6617.     \global\advance\@mparbottom\@tempdima
  6618.     \global\advance\@mparbottom\dp\@marbox
  6619.     \global\advance\@mparbottom\marginparpush
  6620.     \advance\@tempdima -\ht\@marbox
  6621.     \global\setbox \@marbox
  6622.                    \vbox {\vskip \@tempdima
  6623.                           \box \@marbox}%
  6624.     \global \ht\@marbox \z@
  6625.     \global \dp\@marbox \z@
  6626.     \kern -\@pagedp
  6627.     \nointerlineskip
  6628.     \hb@xt@\columnwidth
  6629.       {\ifnum \@tempcnta >\z@
  6630.           \hskip\columnwidth \hskip\marginparsep
  6631.        \else
  6632.           \hskip -\marginparsep \hskip -\marginparwidth
  6633.        \fi
  6634.        \box\@marbox \hss}%
  6635.     \nointerlineskip
  6636.     \hbox{\vrule \@height\z@ \@width\z@ \@depth\@pagedp}}
  6637. \newinsert \@kludgeins
  6638. \global\dimen\@kludgeins \maxdimen
  6639. \global\count\@kludgeins 1000
  6640. \gdef \enlargethispage {%
  6641.    \@ifstar
  6642.      {%
  6643.       \@enlargepage{\hbox{\kern\p@}}}%
  6644.      {%
  6645.       \@enlargepage\@empty}%
  6646. \gdef\@enlargepage#1#2{%
  6647.    \@tempskipa#2\relax
  6648.    \ifdim \@tempskipa>.5\maxdimen
  6649.      \@latexerr{Suggested\space extra\space height\space
  6650.                 (\the\@tempskipa)\space dangerously\space
  6651.                 large}\@eha
  6652.    \else
  6653.      \ifdim \vsize<.5\maxdimen
  6654.        \@bsphack
  6655.          \insert\@kludgeins{#1\vskip-\@tempskipa}%
  6656.        \@esphack
  6657.      \else
  6658.        \@latexerr{Page\space height\space already\space
  6659.                   too\space large}\@eha
  6660.      \fi
  6661.    \fi
  6662. \def \suppressfloats {%
  6663.    \@ifnextchar [%
  6664.      \@flstop
  6665.     {\global \@colnum \z@}%
  6666. \def \@flstop [#1]{%
  6667.    \if t#1%
  6668.      \global \@topnum \z@
  6669.    \fi
  6670.    \if b#1%
  6671.      \global \@botnum \z@
  6672.    \fi
  6673. \newcount \@fpstype
  6674. \newdimen \@reqcolroom
  6675. \newdimen \@textfloatsheight
  6676. \def \@fpsadddefault {%
  6677.    \edef \@fps {\@fps\csname fps@\@captype \endcsname}%
  6678.    \@latex@warning {%
  6679.      No positions in optional float specifier.\MessageBreak
  6680.      Default added (so using `\@fps')}%
  6681. \def \@setfloattypecounts {%
  6682.   \@currtype \count\@currbox
  6683.   \@fpstype \count\@currbox
  6684.   \divide\@currtype\@xxxii \multiply\@currtype\@xxxii
  6685.   \advance \@fpstype -\@currtype
  6686. \def \@getfpsbit {%
  6687.    \@boxfpsbit \@currbox
  6688. \def \@boxfpsbit #1#2{%
  6689.    \@tempcnta \count#1%
  6690.    \divide \@tempcnta #2\relax
  6691. \def \@testfp #1{%
  6692.    \@boxfpsbit #18\relax % Really `#1 8' for human readers!
  6693.    \ifodd \@tempcnta
  6694.    \else
  6695.      \@testtrue
  6696.    \fi
  6697. \def \@setfpsbit #1{%
  6698.    \@tempcntb \@tempcnta
  6699.    \divide \@tempcntb #1\relax
  6700.    \ifodd \@tempcntb
  6701.    \else
  6702.      \advance \@tempcnta #1\relax
  6703.    \fi
  6704. \def \@resethfps {%
  6705.    \let\reserved@a\@empty
  6706.    \ifnum \@fpstype=\@ne
  6707.       \def \reserved@a {!}%
  6708.       \@fpstype 17
  6709.    \fi
  6710.    \ifnum \@fpstype=17
  6711.      \global \advance \count\@currbox \tw@
  6712.      \@latex@warning@no@line {%
  6713.        `\reserved@a h' float specifier changed to `\reserved@a ht'}%
  6714.    \fi
  6715. \def \@flsetnum #1{%
  6716.    \ifnum \@fpstype<\sixt@@n
  6717.      \ifnum #1=\z@
  6718.        #1\@ne
  6719.      \fi
  6720.    \fi
  6721. \def \@flsettextmin {%
  6722.    \ifnum \@fpstype<\sixt@@n
  6723.      \@textmin \z@
  6724.    \else
  6725.      \@textmin \textfraction\@colht
  6726.    \fi
  6727. \def \@flcheckspace #1#2{%
  6728.    \advance \@reqcolroom
  6729.      \ifx #2\@empty \textfloatsep \else \floatsep \fi
  6730.    \ifdim \@colroom>\@reqcolroom
  6731.      \ifdim #1>\ht\@currbox
  6732.        \@tempswatrue
  6733.      \else
  6734.        \ifnum \@fpstype<\sixt@@n
  6735.          \@tempswatrue
  6736.        \fi
  6737.      \fi
  6738.    \fi
  6739. \def \@flupdates #1#2#3{%
  6740.    \global \advance #1\m@ne
  6741.    \global \advance \@colnum \m@ne
  6742.    \@tempdima -\ht\@currbox
  6743.    \advance \@tempdima
  6744.      -\ifx #3\@empty \textfloatsep \else \floatsep \fi
  6745.    \global \advance #2\@tempdima
  6746.    \global \advance \@colroom \@tempdima
  6747.    \@cons #3\@currbox
  6748. \def\@makefcolumn #1{%
  6749.   \begingroup
  6750.     \@fpmin \z@
  6751.     \let \@testfp \@gobble
  6752.     \@tryfcolumn #1%
  6753.   \endgroup
  6754. \def\@outputdblcol{%
  6755.   \if@firstcolumn
  6756.     \global \@firstcolumnfalse
  6757.     \global \setbox\@leftcolumn \box\@outputbox
  6758.   \else
  6759.     \global \@firstcolumntrue
  6760.     \setbox\@outputbox \vbox {%
  6761.                          \hb@xt@\textwidth {%
  6762.                            \hb@xt@\columnwidth {%
  6763.                              \box\@leftcolumn \hss}%
  6764.                            \hfil
  6765.                            \vrule \@width\columnseprule
  6766.                            \hfil
  6767.                            \hb@xt@\columnwidth {%
  6768.                              \box\@outputbox \hss}%
  6769.                                              }%
  6770.                               }%
  6771.     \@combinedblfloats
  6772.     \@outputpage
  6773.     \begingroup
  6774.       \@dblfloatplacement
  6775.       \@startdblcolumn
  6776.       \@whilesw\if@fcolmade \fi
  6777.         {\@outputpage
  6778.          \@startdblcolumn}%
  6779.     \endgroup
  6780.   \fi
  6781. \newcount\c@topnumber
  6782. \setcounter{topnumber}{2}
  6783. \newcommand\topfraction{.7}
  6784. \newcount\c@bottomnumber
  6785. \setcounter{bottomnumber}{1}
  6786. \newcommand\bottomfraction{.3}
  6787. \newcount\c@totalnumber
  6788. \setcounter{totalnumber}{3}
  6789. \newcommand\textfraction{.2}
  6790. \newcommand\floatpagefraction{.5}
  6791. \newcount\c@dbltopnumber
  6792. \setcounter{dbltopnumber}{2}
  6793. \newcommand\dbltopfraction{.7}
  6794. \newcommand\dblfloatpagefraction{.5}
  6795. \newskip\floatsep
  6796. \newskip\textfloatsep
  6797. \newskip\intextsep
  6798. \setlength\floatsep    {12\p@ \@plus 2\p@ \@minus 2\p@}
  6799. \setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
  6800. \setlength\intextsep   {12\p@ \@plus 2\p@ \@minus 2\p@}
  6801. \newskip\dblfloatsep
  6802. \newskip\dbltextfloatsep
  6803. \setlength\dblfloatsep    {12\p@ \@plus 2\p@ \@minus 2\p@}
  6804. \setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
  6805. \newskip\@fptop
  6806. \newskip\@fpsep
  6807. \newskip\@fpbot
  6808. \setlength\@fptop{0\p@ \@plus 1fil}
  6809. \setlength\@fpsep{8\p@ \@plus 2fil}
  6810. \setlength\@fpbot{0\p@ \@plus 1fil}
  6811. \newskip\@dblfptop
  6812. \newskip\@dblfpsep
  6813. \newskip\@dblfpbot
  6814. \setlength\@dblfptop{0\p@ \@plus 1fil}
  6815. \setlength\@dblfpsep{8\p@ \@plus 2fil}
  6816. \setlength\@dblfpbot{0\p@ \@plus 1fil}
  6817. \let\topfigrule=\relax
  6818. \let\botfigrule=\relax
  6819. \let\dblfigrule=\relax
  6820. %%% From File: ltclass.dtx
  6821. \newif\if@compatibility
  6822. \def\@documentclasshook{%
  6823.    \ifx\@normalsize\@undefined
  6824.       \let\@normalsize\normalsize
  6825.    \fi
  6826. \let\@declaredoptions\@empty
  6827. \let\@classoptionslist\relax
  6828. \@onlypreamble\@classoptionslist
  6829. \let\@unusedoptionlist\@empty
  6830. \@onlypreamble\@unusedoptionlist
  6831. \let\CurrentOption\@empty
  6832. \let\@currname\@empty
  6833. \global\let\@currext=\@empty
  6834. \def\@clsextension{cls}
  6835. \def\@pkgextension{sty}
  6836. \@onlypreamble\@clsextension
  6837. \@onlypreamble\@pkgextension
  6838. \def\@pushfilename{%
  6839.   \xdef\@currnamestack{%
  6840.     {\@currname}%
  6841.     {\@currext}%
  6842.     {\the\catcode`\@}%
  6843.     \@currnamestack}}
  6844. \@onlypreamble\@pushfilename
  6845. \def\@popfilename{\expandafter\@p@pfilename\@currnamestack\@nil}
  6846. \@onlypreamble\@popfilename
  6847. \def\@p@pfilename#1#2#3#4\@nil{%
  6848.   \gdef\@currname{#1}%
  6849.   \gdef\@currext{#2}%
  6850.   \catcode`\@#3\relax
  6851.   \gdef\@currnamestack{#4}}
  6852. \@onlypreamble\@p@pfilename
  6853. \gdef\@currnamestack{}
  6854. \@onlypreamble\@currnamestack
  6855. \def\@ptionlist#1{%
  6856.   \@ifundefined{opt@#1}\@empty{\csname opt@#1\endcsname}}
  6857. \@onlypreamble\@ptionlist
  6858. \def\@ifpackageloaded{\@ifl@aded\@pkgextension}
  6859. \def\@ifclassloaded{\@ifl@aded\@clsextension}
  6860. \@onlypreamble\@ifpackageloaded
  6861. \@onlypreamble\@ifclassloaded
  6862. \def\@ifl@aded#1#2{%
  6863.   \expandafter\ifx\csname ver@#2.#1\endcsname\relax
  6864.     \expandafter\@secondoftwo
  6865.   \else
  6866.     \expandafter\@firstoftwo
  6867.   \fi}
  6868. \@onlypreamble\@ifl@aded
  6869. \def\@ifpackagelater{\@ifl@ter\@pkgextension}
  6870. \def\@ifclasslater{\@ifl@ter\@clsextension}
  6871. \@onlypreamble\@ifpackagelater
  6872. \@onlypreamble\@ifclasslater
  6873. \def\@ifl@ter#1#2{%
  6874.   \expandafter\@ifl@t@r
  6875.     \csname ver@#2.#1\endcsname}
  6876. \@onlypreamble\@ifl@ter
  6877. \def\@ifl@t@r#1#2{%
  6878.   \ifnum\expandafter\@parse@version#1//00\@nil<%
  6879.         \expandafter\@parse@version#2//00\@nil
  6880.     \expandafter\@secondoftwo
  6881.   \else
  6882.     \expandafter\@firstoftwo
  6883.   \fi}
  6884. \@onlypreamble\@ifl@t@r
  6885. \def\@parse@version#1/#2/#3#4#5\@nil{#1#2#3#4 }
  6886. \@onlypreamble\@parse@version
  6887. \def\@ifpackagewith{\@if@ptions\@pkgextension}
  6888. \def\@ifclasswith{\@if@ptions\@clsextension}
  6889. \@onlypreamble\@ifpackagewith
  6890. \@onlypreamble\@ifclasswith
  6891. \def\@if@ptions#1#2{%
  6892.   \@expandtwoargs\@if@pti@ns{\@ptionlist{#2.#1}}}
  6893. \@onlypreamble\@if@ptions
  6894. \def\@if@pti@ns#1#2{%
  6895.   \let\reserved@a\@firstoftwo
  6896.   \@for\reserved@b:=#2\do{%
  6897.     \expandafter\in@\expandafter{\expandafter,\reserved@b,}{,#1,}%
  6898.     \ifin@\else\let\reserved@a\@secondoftwo\fi}%
  6899.   \reserved@a}
  6900. \@onlypreamble\@if@pti@ns
  6901. \def\ProvidesPackage#1{%
  6902.   \xdef\@gtempa{#1}%
  6903.   \ifx\@gtempa\@currname\else
  6904.     \@latex@warning@no@line{You have requested
  6905.       \@cls@pkg\space`\@currname',\MessageBreak
  6906.        but the \@cls@pkg\space provides `#1'}%
  6907.   \fi
  6908.   \@ifnextchar[\@pr@videpackage{\@pr@videpackage[]}}%]
  6909. \@onlypreamble\ProvidesPackage
  6910. \def\@pr@videpackage[#1]{%
  6911.   \expandafter\xdef\csname ver@\@currname.\@currext\endcsname{#1}%
  6912.   \ifx\@currext\@clsextension
  6913.     \typeout{Document Class: \@gtempa\space#1}%
  6914.   \else
  6915.     \wlog{Package: \@gtempa\space#1}%
  6916.   \fi}
  6917. \@onlypreamble\@pr@videpackage
  6918. \let\ProvidesClass\ProvidesPackage
  6919. \@onlypreamble\ProvidesClass
  6920. \def\ProvidesFile#1{%
  6921.   \begingroup
  6922.     \catcode`\ 10 %
  6923.     \@makeother\/%
  6924.     \@ifnextchar[{\@providesfile{#1}}{\@providesfile{#1}[]}}
  6925. \def\@pass@ptions#1#2#3{%
  6926.   \expandafter\xdef\csname opt@#3.#1\endcsname{%
  6927.     \@ifundefined{opt@#3.#1}\@empty
  6928.       {\csname opt@#3.#1\endcsname,}%
  6929.     \zap@space#2 \@empty}}
  6930. \@onlypreamble\@pass@ptions
  6931. \def\PassOptionsToPackage{\@pass@ptions\@pkgextension}
  6932. \def\PassOptionsToClass{\@pass@ptions\@clsextension}
  6933. \@onlypreamble\PassOptionsToPackage
  6934. \@onlypreamble\PassOptionsToClass
  6935. \def\DeclareOption{%
  6936.   \let\@fileswith@pti@ns\@badrequireerror
  6937.   \@ifstar\@defdefault@ds\@declareoption}
  6938. \long\def\@declareoption#1#2{%
  6939.    \xdef\@declaredoptions{\@declaredoptions,#1}%
  6940.    \toks@{#2}%
  6941.    \expandafter\edef\csname ds@#1\endcsname{\the\toks@}}
  6942. \long\def\@defdefault@ds#1{%
  6943.   \toks@{#1}%
  6944.   \edef\default@ds{\the\toks@}}
  6945. \@onlypreamble\DeclareOption
  6946. \@onlypreamble\@declareoption
  6947. \@onlypreamble\@defdefault@ds
  6948. \def\OptionNotUsed{%
  6949.   \ifx\@currext\@clsextension
  6950.     \xdef\@unusedoptionlist{%
  6951.       \ifx\@unusedoptionlist\@empty\else\@unusedoptionlist,\fi
  6952.       \CurrentOption}%
  6953.   \fi}
  6954. \@onlypreamble\OptionNotUsed
  6955. \def\ProcessOptions{%
  6956.   \let\ds@\@empty
  6957.   \edef\@curroptions{\@ptionlist{\@currname.\@currext}}%
  6958.   \@ifstar\@xprocess@ptions\@process@ptions}
  6959. \@onlypreamble\ProcessOptions
  6960. \def\@process@ptions{%
  6961.   \@for\CurrentOption:=\@declaredoptions\do{%
  6962.     \ifx\CurrentOption\@empty\else
  6963.       \@expandtwoargs\in@{,\CurrentOption,}{%
  6964.          ,\ifx\@currext\@clsextension\else\@classoptionslist,\fi
  6965.          \@curroptions,}%
  6966.       \ifin@
  6967.         \@use@ption
  6968.         \expandafter\let\csname ds@\CurrentOption\endcsname\@empty
  6969.       \fi
  6970.     \fi}%
  6971.   \@process@pti@ns}
  6972. \@onlypreamble\@process@ptions
  6973. \def\@xprocess@ptions{%
  6974.   \ifx\@currext\@clsextension\else
  6975.     \@for\CurrentOption:=\@classoptionslist\do{%
  6976.       \ifx\CurrentOption\@empty\else
  6977.         \@expandtwoargs\in@{,\CurrentOption,}{,\@declaredoptions,}%
  6978.         \ifin@
  6979.           \@use@ption
  6980.           \expandafter\let\csname ds@\CurrentOption\endcsname\@empty
  6981.         \fi
  6982.       \fi}%
  6983.   \fi
  6984.   \@process@pti@ns}
  6985. \@onlypreamble\@xprocess@ptions
  6986. \def\@process@pti@ns{%
  6987.   \@for\CurrentOption:=\@curroptions\do{%
  6988.     \@ifundefined{ds@\CurrentOption}%
  6989.       {\@use@ption
  6990.        \default@ds}%
  6991.       \@use@ption}%
  6992.   \@for\CurrentOption:=\@declaredoptions\do{%
  6993.     \expandafter\let\csname ds@\CurrentOption\endcsname\relax}%
  6994.   \let\CurrentOption\@empty
  6995.   \let\@fileswith@pti@ns\@@fileswith@pti@ns
  6996.   \AtEndOfPackage{\let\@unprocessedoptions\relax}}
  6997. \@onlypreamble\@process@pti@ns
  6998. \def\@options{\ProcessOptions*}
  6999. \@onlypreamble\@options
  7000. \def\@use@ption{%
  7001.   \@expandtwoargs\@removeelement\CurrentOption
  7002.   \@unusedoptionlist\@unusedoptionlist
  7003.   \csname ds@\CurrentOption\endcsname}
  7004. \@onlypreamble\@use@ption
  7005. \def\ExecuteOptions#1{%
  7006.   \def\reserved@a##1\@nil{%
  7007.     \@for\CurrentOption:=#1\do{\csname ds@\CurrentOption\endcsname}%
  7008.     \edef\CurrentOption{##1}}%
  7009.   \expandafter\reserved@a\CurrentOption\@nil}
  7010. \@onlypreamble\ExecuteOptions
  7011. \def\documentclass{%
  7012.   \let\documentclass\@twoclasseserror
  7013.   \if@compatibility\else\let\usepackage\RequirePackage\fi
  7014.   \@fileswithoptions\@clsextension}
  7015. \@onlypreamble\documentclass
  7016. \def\documentstyle{%
  7017.   \makeatletter\input{latex209.def}\makeatother
  7018.   \documentclass}
  7019. \@onlypreamble\documentstyle
  7020. \def\RequirePackage{%
  7021.   \@fileswithoptions\@pkgextension}
  7022. \@onlypreamble\RequirePackage
  7023. \def\LoadClass{%
  7024.   \ifx\@currext\@pkgextension
  7025.      \@latex@error
  7026.       {\noexpand\LoadClass in package file}%
  7027.       {You may only use \noexpand\LoadClass in a class file.}%
  7028.   \fi
  7029.   \@fileswithoptions\@clsextension}
  7030. \@onlypreamble\LoadClass
  7031. \def\@loadwithoptions#1#2#3{%
  7032.   \expandafter\let\csname opt@#3.#1\expandafter\endcsname
  7033.        \csname opt@\@currname.\@currext\endcsname
  7034.    #2{#3}}
  7035. \@onlypreamble\@loadwithoptions
  7036. \def\LoadClassWithOptions{%
  7037.   \@loadwithoptions\@clsextension\LoadClass}
  7038. \@onlypreamble\LoadClassWithOptions
  7039. \def\RequirePackageWithOptions{%
  7040.   \AtEndOfPackage{\let\@unprocessedoptions\relax}%
  7041.   \@loadwithoptions\@pkgextension\RequirePackage}
  7042. \@onlypreamble\RequirePackageWithOptions
  7043. \def\usepackage#1#{%
  7044.   \@latex@error
  7045.     {\noexpand \usepackage before \string\documentclass}%
  7046.     {\noexpand \usepackage may only appear in the document
  7047.       preamble, i.e.,\MessageBreak
  7048.       between \noexpand\documentclass and
  7049.       \string\begin{document}.}%
  7050.   \@gobble}
  7051. \@onlypreamble\usepackage
  7052. \def\NeedsTeXFormat#1{%
  7053.   \def\reserved@a{#1}%
  7054.   \ifx\reserved@a\fmtname
  7055.     \expandafter\@needsformat
  7056.   \else
  7057.      \@latex@error{This file needs format `\reserved@a'%
  7058.        \MessageBreak but this is `\fmtname'}{%
  7059.        The current input file will not be processed
  7060.        further,\MessageBreak
  7061.        because it was written for some other flavor of
  7062.        TeX.\MessageBreak\@ehd}%
  7063.      \endinput \fi}
  7064. \@onlypreamble\NeedsTeXFormat
  7065. \def\@needsformat{%
  7066.   \@ifnextchar[%]
  7067.     \@needsf@rmat
  7068.     {}}
  7069. \@onlypreamble\@needsformat
  7070. \def\@needsf@rmat[#1]{%
  7071.     \@ifl@t@r\fmtversion{#1}{}%
  7072.     {\@latex@warning@no@line
  7073.         {You have requested release `#1' of LaTeX,\MessageBreak
  7074.          but only release `\fmtversion' is available}}}
  7075. \@onlypreamble\@needsf@rmat
  7076. \def\zap@space#1 #2{%
  7077.   #1%
  7078.   \ifx#2\@empty\else\expandafter\zap@space\fi
  7079.   #2}
  7080. \def\@fileswithoptions#1{%
  7081.   \@ifnextchar[%]
  7082.     {\@fileswith@ptions#1}%
  7083.     {\@fileswith@ptions#1[]}}
  7084. \@onlypreamble\@fileswithoptions
  7085. \def\@fileswith@ptions#1[#2]#3{%
  7086.   \@ifnextchar[%]
  7087.   {\@fileswith@pti@ns#1[#2]#3}%
  7088.   {\@fileswith@pti@ns#1[#2]#3[]}}
  7089. \@onlypreamble\@fileswith@ptions
  7090. \def\@fileswith@pti@ns#1[#2]#3[#4]{%
  7091.   \ifx#1\@clsextension
  7092.     \ifx\@classoptionslist\relax
  7093.       \xdef\@classoptionslist{\zap@space#2 \@empty}%
  7094.       \def\reserved@a{%
  7095.         \@onefilewithoptions#3[#2][#4]#1%
  7096.         \@documentclasshook}%
  7097.     \else
  7098.       \def\reserved@a{%
  7099.         \@onefilewithoptions#3[#2][#4]#1}%
  7100.     \fi
  7101.   \else
  7102.     \def\reserved@b##1,{%
  7103.       \ifx\@nil##1\relax\else
  7104.         \ifx\relax##1\relax\else
  7105.          \noexpand\@onefilewithoptions##1[#2][#4]\noexpand\@pkgextension
  7106.         \fi
  7107.         \expandafter\reserved@b
  7108.       \fi}%
  7109.       \edef\reserved@a{\zap@space#3 \@empty}%
  7110.       \edef\reserved@a{\expandafter\reserved@b\reserved@a,\@nil,}%
  7111.   \fi
  7112.   \reserved@a}
  7113. \@onlypreamble\@fileswith@pti@ns
  7114. \def\@onefilewithoptions#1[#2][#3]#4{%
  7115.   \@pushfilename
  7116.   \xdef\@currname{#1}%
  7117.   \global\let\@currext#4%
  7118.   \expandafter\let\csname\@currname.\@currext-h@@k\endcsname\@empty
  7119.   \let\CurrentOption\@empty
  7120.   \@reset@ptions
  7121.   \makeatletter
  7122.   \def\reserved@a{%
  7123.     \@ifl@aded\@currext{#1}%
  7124.       {\@if@ptions\@currext{#1}{#2}{}%
  7125.         {\@latex@error
  7126.             {Option clash for \@cls@pkg\space #1}%
  7127.             {The package #1 has already been loaded
  7128.              with options:\MessageBreak
  7129.              \space\space[\@ptionlist{#1.\@currext}]\MessageBreak
  7130.              There has now been an attempt to load it
  7131.               with options\MessageBreak
  7132.              \space\space[#2]\MessageBreak
  7133.              Adding the line:\MessageBreak
  7134.              \space\space\string\usepackage
  7135.                   [\@ptionlist{#1.\@currext},#2]{#1}\MessageBreak
  7136.              to your document may fix this.\MessageBreak
  7137.              Try typing \space <return> \space to proceed.}}}%
  7138.       {\@pass@ptions\@currext{#2}{#1}%
  7139.        \global\expandafter
  7140.        \let\csname ver@\@currname.\@currext\endcsname\@empty
  7141.        \InputIfFileExists
  7142.          {\@currname.\@currext}%
  7143.          {}%
  7144.          {\@missingfileerror\@currname\@currext}%
  7145.     \let\@unprocessedoptions\@@unprocessedoptions
  7146.     \csname\@currname.\@currext-h@@k\endcsname
  7147.     \expandafter\let\csname\@currname.\@currext-h@@k\endcsname
  7148.               \@undefined
  7149.     \@unprocessedoptions}
  7150.     \@ifl@ter\@currext{#1}{#3}{}%
  7151.       {\@latex@warning@no@line
  7152.          {You have requested,\on@line,
  7153.           version\MessageBreak
  7154.             `#3' of \@cls@pkg\space #1,\MessageBreak
  7155.           but only version\MessageBreak
  7156.            `\csname ver@#1.\@currext\endcsname'\MessageBreak
  7157.           is available}}%
  7158.     \ifx\@currext\@clsextension\let\LoadClass\@twoloadclasserror\fi
  7159.     \@popfilename
  7160.     \@reset@ptions}%
  7161.   \reserved@a}
  7162. \@onlypreamble\@onefilewithoptions
  7163. \let\@@fileswith@pti@ns\@fileswith@pti@ns
  7164. \@onlypreamble\@@fileswith@pti@ns
  7165. \def\@reset@ptions{%
  7166.   \global\ifx\@currext\@clsextension
  7167.     \let\default@ds\OptionNotUsed
  7168.    \else
  7169.     \let\default@ds\@unknownoptionerror
  7170.   \fi
  7171.   \global\let\ds@\@empty
  7172.   \global\let\@declaredoptions\@empty}
  7173. \@onlypreamble\@reset@ptions
  7174. \ifx\@begindocumenthook\@undefined
  7175.   \let\@begindocumenthook\@empty
  7176. \let\@enddocumenthook\@empty
  7177. \long\def\g@addto@macro#1#2{
  7178.   \begingroup
  7179.     \toks@\expandafter{#1#2}%
  7180.     \xdef#1{\the\toks@}%
  7181.   \endgroup}
  7182. \def\AtEndOfPackage{%
  7183.   \expandafter\g@addto@macro\csname\@currname.\@currext-h@@k\endcsname}
  7184. \let\AtEndOfClass\AtEndOfPackage
  7185. \@onlypreamble\AtEndOfPackage
  7186. \@onlypreamble\AtEndOfClass
  7187. \def\AtBeginDocument{\g@addto@macro\@begindocumenthook}
  7188. \def\AtEndDocument{\g@addto@macro\@enddocumenthook}
  7189. \@onlypreamble\AtBeginDocument
  7190. \def\@cls@pkg{%
  7191.   \ifx\@currext\@clsextension
  7192.     document class%
  7193.   \else
  7194.     package%
  7195.   \fi}
  7196. \@onlypreamble\@cls@pkg
  7197. \def\@unknownoptionerror{%
  7198.   \@latex@error
  7199.     {Unknown option `\CurrentOption' for \@cls@pkg\space`\@currname'}%
  7200.     {The option `\CurrentOption' was not declared in
  7201.      \@cls@pkg\space`\@currname', perhaps you\MessageBreak
  7202.       misspelled its name.
  7203.      Try typing \space <return>
  7204.      \space to proceed.}}
  7205. \@onlypreamble\@unknownoptionerror
  7206. \def\@@unprocessedoptions{%
  7207.   \ifx\@currext\@pkgextension
  7208.     \edef\@curroptions{\@ptionlist{\@currname.\@currext}}%
  7209.     \@for\CurrentOption:=\@curroptions\do{%
  7210.         \ifx\CurrentOption\@empty\else\@unknownoptionerror\fi}%
  7211.   \fi}
  7212. \@onlypreamble\@unprocessedoptions
  7213. \@onlypreamble\@@unprocessedoptions
  7214. \def\@badrequireerror#1[#2]#3[#4]{%
  7215.   \@latex@error
  7216.     {\noexpand\RequirePackage or \noexpand\LoadClass
  7217.          in Options Section}%
  7218.     {The \@cls@pkg\space `\@currname' is defective.\MessageBreak
  7219.      It attempts to load `#3' in the options section, i.e.,\MessageBreak
  7220.      between \noexpand\DeclareOption and \string\ProcessOptions.}}
  7221. \@onlypreamble\@badrequireerror
  7222. \def\@twoloadclasserror{%
  7223.   \@latex@error
  7224.     {Two \noexpand\LoadClass commands}%
  7225.     {You may only use one \noexpand\LoadClass in a class file}}
  7226. \@onlypreamble\@twoloadclasserror
  7227. \def\@twoclasseserror#1#{%
  7228.   \@latex@error
  7229.     {Two \noexpand\documentclass or \noexpand\documentstyle commands}%
  7230.     {The document may only declare one class.}\@gobble}
  7231. \@onlypreamble\@twoclasseserror
  7232. \def\two@digits#1{\ifnum#1<10 0\fi\number#1}
  7233. \begingroup%
  7234. \gdef\filecontents{\@tempswatrue\filec@ntents}%
  7235. \catcode`\*=11 %
  7236. \gdef\filecontents*{\@tempswafalse\filec@ntents}%
  7237. \catcode`\^^M\active%
  7238. \catcode`\^^L\active\let^^L\relax%
  7239. \catcode`\^^I\active%
  7240. \gdef\filec@ntents#1{%
  7241.   \openin\@inputcheck#1 %
  7242.   \ifeof\@inputcheck%
  7243.     \@latex@warning@no@line%
  7244.         {Writing file `\@currdir#1'}%
  7245.     \chardef\verbatim@out15 %
  7246.     \ch@ck7\verbatim@out\write%
  7247.   \else%
  7248.     \closein\@inputcheck%
  7249.     \@latex@warning@no@line%
  7250.             {File `#1' already exists on the system.\MessageBreak%
  7251.              Not generating it from this source}%
  7252.     \def\immediate##1\relax{}%
  7253.   \fi%
  7254.   \immediate\openout\verbatim@out=#1\relax%
  7255.   \if@tempswa%
  7256.     \immediate\write\verbatim@out{%
  7257.       \@percentchar\@percentchar\space LaTeX2e file `#1'^^J%
  7258.       \@percentchar\@percentchar\space  generated by the %
  7259.          `filecontents' environment^^J%
  7260.       \@percentchar\@percentchar\space from source `\jobname' on %
  7261.          \number\year/\two@digits\month/\two@digits\day.^^J%
  7262.       \@percentchar\@percentchar}\relax%
  7263.   \fi%
  7264.   \let\do\@makeother\dospecials%
  7265.   \@vwrend%
  7266. \catcode`\^^L\active%
  7267. \let\L\@undefined%
  7268. \def^^L{\@ifundefined L^^J^^J^^J}%
  7269. \catcode`\^^I\active%
  7270. \let\I\@undefined%
  7271. \def^^I{\@ifundefined I\space\space}%
  7272.   \catcode`\^^M\active%
  7273.   \def^^M##1^^M%
  7274.     {\def\reserved@b{##1}%
  7275.      \ifx\reserved@b\reserved@a%
  7276.        \expandafter\end\expandafter{\@currenvir}%
  7277.      \else%
  7278.        \immediate\write\verbatim@out{##1}\relax\expandafter^^M%
  7279.      \fi}}%
  7280. \endgroup%
  7281. \begingroup
  7282. \catcode`/=0
  7283. \catcode`<=\catcode`{
  7284. \catcode`>=\catcode`}
  7285. \catcode`|=\catcode`\%
  7286. /catcode`/\=12
  7287. /catcode`/{=12
  7288. /catcode`/}=12
  7289. /catcode`/%=12
  7290. /catcode`/*=11
  7291. /gdef/@percentchar<%>
  7292. /gdef/@vwrend</edef/reserved@a<\end{/@currenvir}>>
  7293. /gdef/endfilecontents<|
  7294.   /immediate/closeout/verbatim@out/relax
  7295.   /ifx/L/@undefined/else
  7296.     /@latex@warning@no@line<Form Feed has been converted to Blank Line>|
  7297.   /fi
  7298.   /ifx/I/@undefined/else
  7299.     /@latex@warning@no@line<Tab has been converted to Space>|
  7300.   /fi
  7301.   /immediate/write/@unused<>/relax>
  7302. /global/let/endfilecontents*/endfilecontents|
  7303. /@onlypreamble/filecontents
  7304. /@onlypreamble/endfilecontents
  7305. /@onlypreamble/filecontents*
  7306. /@onlypreamble/endfilecontents*
  7307. /endgroup
  7308. \@onlypreamble\filec@ntents
  7309. \@onlypreamble\@vwrend
  7310. %%% From File: ltfinal.dtx
  7311. \tracingstats1
  7312. \errhelp{}
  7313. \newcount\@lowpenalty
  7314. \newcount\@medpenalty
  7315. \newcount\@highpenalty
  7316. \unitlength = 1pt
  7317. \fboxsep = 3pt
  7318. \fboxrule = .4pt
  7319. \@maxdepth       = \maxdepth
  7320. \vsize = 1000pt
  7321. \@colroom = \vsize
  7322. \@colht = \vsize
  7323. \textheight=.5\maxdimen
  7324. \textwidth=\textheight
  7325. \ps@empty
  7326. \InputIfFileExists{hyphen.cfg}
  7327.            {\typeout{===========================================^^J%
  7328.                       Local configuration file hyphen.cfg used^^J%
  7329.                      ===========================================}%
  7330.              \def\@addtofilelist##1{\xdef\@filelist{\@filelist,##1}}%
  7331.            }
  7332.            {\input{hyphen.ltx}}
  7333. \let\@addtofilelist\@gobble
  7334. \ifdim \font@submax >\z@
  7335.    \@font@warning{Size substitutions with differences\MessageBreak
  7336.                  up to \font@submax\space have occured.\MessageBreak
  7337.                 \MessageBreak
  7338.                 Please check the transcript file
  7339.                 carefully\MessageBreak
  7340.                 and redo the format generation if necessary!
  7341.                 \@gobbletwo}%
  7342.    \errhelp{Only stopped, to give you time to
  7343.             read the above message.}
  7344.    \errmessage{}
  7345. \def\font@submax{0pt}
  7346. \def\reserved@a#1#2{%
  7347.    \@tempcnta#1\relax
  7348.    \@tempcntb#2\relax
  7349.    \reserved@b
  7350. \def\reserved@b{%
  7351.    \ifnum\@tempcnta>\@tempcntb\else
  7352.       \reserved@c\@tempcnta
  7353.       \advance\@tempcnta\@ne
  7354.       \expandafter\reserved@b
  7355.    \fi
  7356. \catcode`\ =10
  7357. \catcode`\#=6
  7358. \catcode`\$=3
  7359. \catcode`\%=14
  7360. \catcode`\&=4
  7361. \catcode`\\=0
  7362. \catcode`\^=7
  7363. \catcode`\_=8
  7364. \catcode`\{=1
  7365. \catcode`\}=2
  7366. \catcode`\~=13
  7367. \catcode`\@=11
  7368. \catcode`\^^I=10
  7369. \catcode`\^^J=12
  7370. \catcode`\^^L=13
  7371. \catcode`\^^M=5
  7372. \def\reserved@c#1{\catcode#1=12\relax}
  7373. \reserved@c{`\!}
  7374. \reserved@c{`\"}
  7375. \reserved@a{`\'}{`\?}
  7376. \reserved@c{`\[}
  7377. \reserved@c{`\]}
  7378. \reserved@c{`\`}
  7379. \reserved@c{`\|}
  7380. \def\reserved@c#1{\catcode#1=11\relax}
  7381. \reserved@a{`\A}{`\Z}
  7382. \reserved@a{`\a}{`\z}
  7383. \def\reserved@c#1{\catcode#1=15\relax}
  7384. \reserved@a{0}{`\^^H}
  7385. \reserved@c{`\^^K}
  7386. \reserved@a{`\^^N}{31}
  7387.   \catcode"7F=15
  7388. \def\reserved@c#1{%
  7389.    \count@=#1\advance\count@ by -"20
  7390.    \uccode#1=\count@
  7391.    \lccode#1=#1
  7392. \reserved@a{`\a}{`\z}
  7393. \ifnum\inputlineno=\m@ne\else
  7394.   \reserved@a{"A0}{"BC}
  7395.   \reserved@a{"E0}{"FF}
  7396. \def\reserved@c#1{%
  7397.    \count@=#1\advance\count@ by "20
  7398.    \uccode#1=#1
  7399.    \lccode#1=\count@
  7400.    \sfcode#1=999
  7401. \reserved@a{`\A}{`\Z}
  7402. \ifnum\inputlineno=\m@ne\else
  7403.   \reserved@a{"80}{"9C}
  7404.   \reserved@a{"C0}{"DF}
  7405. \uccode`\^^Y=`\I     % dotless i
  7406. \lccode`\^^Y=`\^^Y   % dotless i
  7407. \uccode`\^^Z=`\J     % dotless j, ae in OT1
  7408. \lccode`\^^Z=`\^^Z   % dotless j, ae in OT1
  7409. \ifnum\inputlineno=\m@ne\else
  7410.   \lccode`\^^9d=`\i    % dotted I
  7411.   \uccode`\^^9d=`\^^9d % dotted I
  7412.   \lccode`\^^9e=`\^^9e % d-bar
  7413.   \uccode`\^^9e=`\^^d0 % d-bar
  7414. \lccode`\^^[=`\^^[   % oe in OT1
  7415. \DeclareRobustCommand{\MakeUppercase}[1]{{%
  7416.       \def\i{I}\def\j{J}%
  7417.       \def\reserved@a##1##2{\let##1##2\reserved@a}%
  7418.       \expandafter\reserved@a\@uclclist\reserved@b{\reserved@b\@gobble}%
  7419.       \protected@edef\reserved@a{\uppercase{#1}}%
  7420.       \reserved@a
  7421.    }}
  7422. \DeclareRobustCommand{\MakeLowercase}[1]{{%
  7423.       \def\reserved@a##1##2{\let##2##1\reserved@a}%
  7424.       \expandafter\reserved@a\@uclclist\reserved@b{\reserved@b\@gobble}%
  7425.       \protected@edef\reserved@a{\lowercase{#1}}%
  7426.       \reserved@a
  7427.    }}
  7428. \def\@uclclist{\oe\OE\o\O\ae\AE\aa\AA
  7429.       \dh\DH\dj\DJ\l\L\ng\NG\ss\SS\th\TH}
  7430. \protected@edef\MakeUppercase#1{\MakeUppercase{#1}}
  7431. \protected@edef\MakeLowercase#1{\MakeLowercase{#1}}
  7432. \IfFileExists{ltpatch.ltx}
  7433.   {\typeout{=================================^^J%
  7434.              Applying patch file ltpatch.ltx^^J%
  7435.             =================================}
  7436.    \def\fmtversion@topatch{unknown}
  7437.    \input{ltpatch.ltx}
  7438.    \ifx\fmtversion\fmtversion@topatch
  7439.       \ifx\patch@level\@undefined
  7440.         \typeout{^^J^^J^^J%
  7441.          !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!^^J%
  7442.          !! Patch file `ltpatch.ltx' not suitable for this^^J%
  7443.          !! version of LaTeX.^^J^^J%
  7444.          !! Please check if initex found an old patch file:^^J%
  7445.          !! --- if so, rename it or delete it, and redo the^^J%
  7446.          !! initex run.^^J%
  7447.          !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!^^J}%
  7448.         \batchmode \@@end
  7449.       \else
  7450.         \def\fmtversion@topatch{0}%
  7451.         \ifx\fmtversion@topatch\patch@level\else
  7452.           \def\reserved@a\typeout##1##2\reserved@a{%
  7453.                  \typeout{##1 patch level \patch@level}##2}
  7454.           \everyjob\expandafter\expandafter\expandafter{%
  7455.              \expandafter\reserved@a\the\everyjob\reserved@a}
  7456.           \let\reserved@a\relax
  7457.           \the\everyjob
  7458.         \fi
  7459.       \fi
  7460.    \else
  7461.       \typeout{^^J^^J^^J%
  7462.      !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!^^J%
  7463.      !! Patch file `ltpatch.ltx' (for version <\fmtversion@topatch>)^^J%
  7464.      !! is not suitable for version <\fmtversion> of LaTeX.^^J^^J%
  7465.      !! Please check if initex found an old patch file:^^J%
  7466.      !! --- if so, rename it or delete it, and redo the^^J%
  7467.      !!     initex run.^^J%
  7468.      !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!^^J}%
  7469.        \batchmode \@@end
  7470.    \fi
  7471.    \let\fmtversion@topatch\relax
  7472.   }{}
  7473. \let\reserved@a\@filelist
  7474. \let\reserved@b=\@undefined
  7475. \let\reserved@c=\@undefined
  7476. \let\reserved@d=\@undefined
  7477. \let\reserved@e=\@undefined
  7478. \let\reserved@f=\@undefined
  7479. \toks0{}
  7480. \toks2{}
  7481. \toks4{}
  7482. \toks6{}
  7483. \toks8{}
  7484. \def\@providesfile#1[#2]{%
  7485.     \wlog{File: #1 #2}%
  7486.     \expandafter\xdef\csname ver@#1\endcsname{#2}%
  7487.   \endgroup}
  7488. \let\@filelist\@gobble
  7489. \def\@addtofilelist#1{\xdef\@filelist{\@filelist,#1}}%
  7490. \makeatother
  7491. \errorstopmode
  7492. \dump
  7493. \endinput
  7494. %% End of file `latex.ltx'.
  7495.